替换通过PE加载器加载的模块的导入表
来源:互联网 发布:网上淘宝兼职刷信誉 编辑:程序博客网 时间:2024/05/17 22:49
PE加载器:将PE文件在内存中加载,此加载方式,进程的模块列表中无法查看到模块名。Procmon中监视,堆栈,堆栈中显示<未知>,汇编跟踪时也没有模块名。
替换方法:找到模块所在的内存块,对内存块中的PE文件进行解析,定位到导入表处,再替换导入表。
方法详见代码
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,true,m_Pid);char str[315392];memset(str,0,315392);DWORD lread;BOOL bSuccess = ReadProcessMemory(hProcess,(LPCVOID)0x01ae0000,str,315392,&lread);//判断PE文件PIMAGE_DOS_HEADER PE_Head;//DOS头PE_Head = (PIMAGE_DOS_HEADER)str;if (PE_Head->e_magic != IMAGE_DOS_SIGNATURE){AfxMessageBox("错误的MS_DOS头!");return;}PIMAGE_NT_HEADERS PE_NtHead;//NT头PE_NtHead = (PIMAGE_NT_HEADERS)(str+PE_Head->e_lfanew);if (PE_NtHead->Signature != IMAGE_NT_SIGNATURE){AfxMessageBox("错误的PE头!");return;}//获取头的地址PIMAGE_FILE_HEADER PE_FileHead;//文件头PIMAGE_OPTIONAL_HEADER PE_OptionHead;//可选头PE_FileHead = &PE_NtHead->FileHeader;PE_OptionHead = &PE_NtHead->OptionalHeader;//获取导入表的地址PIMAGE_DATA_DIRECTORY PE_ImportDirectory;//由于输入表为第二项,获取输入表的目录表的信息。PE_ImportDirectory = &PE_OptionHead->DataDirectory[1];//获取输入表前先获取输入表的偏移地址DWORD PE_ImportOffset;PE_ImportOffset = PE_ImportDirectory->VirtualAddress;//输入表是以IMAGE_IMPORT_DESCRIPTOR为结构,以空为结尾//先获得输入表的指针PIMAGE_IMPORT_DESCRIPTOR pImportDesc;pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR)(str + PE_ImportOffset);while (pImportDesc->FirstThunk){char szName[1024];memset(szName,0,1024);strcpy(szName,str+pImportDesc->Name);PIMAGE_THUNK_DATA PE_INT; PE_INT = (PIMAGE_THUNK_DATA)(str+pImportDesc->OriginalFirstThunk);PIMAGE_THUNK_DATA PE_IAT;PE_IAT = (PIMAGE_THUNK_DATA)(str+pImportDesc->FirstThunk);char *pszFunName = NULL;while(PE_IAT->u1.Function){if (PE_IAT->u1.Function == 0x7C801A28){PE_IAT->u1.Function = 0x3449068;}// if (PE_IAT->u1.Function == 0x7C809BE7)// {// PE_IAT->u1.Function = 0x33C9068;// }//PDWORD lpAddr = str + PE_IAT->u1.FunctionPE_IAT++;}pImportDesc++;}bSuccess = WriteProcessMemory(hProcess,(LPVOID)0x01ae0000,str,315392,&lread);int x = 01;
- 替换通过PE加载器加载的模块的导入表
- PE加载器的实现
- PE加载器的实现
- 仿真WINDOWS PE加载器的程序
- 仿真WINDOWS PE加载器的程序
- 仿真WINDOWS PE加载器的程序
- 仿真WINDOWS PE加载器的程序
- 驱动模块的加载
- linux模块的加载
- 内核模块的加载
- py模块的加载
- python 模块的加载
- nodejs 的模块加载
- PE文件和COFF文件格式分析——导出表的应用——通过导出表隐性加载DLL
- 一段仿真PE加载器行为的程序
- 一段仿真PE加载器行为的程序
- 一段仿真PE加载器行为的程序
- 一段仿真PE加载器行为的程序
- Python 3程序开发指南
- 设置jlabel文字颜色
- Battle.net v2 登录协议分析 1
- 关于phprpc测试实例
- VMware Workstation 8.0 使用教程(一)安装VM
- 替换通过PE加载器加载的模块的导入表
- 自己的开发笔记
- Android Launcher全面剖析
- flex4 跑马灯效果 [源码]
- 菜鸟学习笔记——function(index,value)的困扰
- VC中实现在OUTPUT中打印log
- [转]用makefile脚本方式调用vs 2010 的nmake来编译工程的实例
- CMediaPlayer2
- 面具和心思几时有