说我有app TestApp.exe 当TestApp.exe运行时,我想要一个单独的程序来读取驻留在内存中的可执行代码。我想忽略堆栈和堆以及其他任何相切的东西。
换句话说,我想我是在问如何确定磁盘上.exe二进制数据的内存端等价物所在的位置。我意识到这不是1:1的内存填充。
编辑:我认为我要求的内容在vmmap.exe的以下屏幕截图中显示为图像
编辑:我能够使用VirtualQueryEx和ReadProcessMemory从内存中获取所有使用Execute *(PAGE_EXECUTE等)的任何保护标志标记的内存。这有几个问题。首先,我为notepad.exe抓取了大约2兆字节的数据,这是一个189千字节的磁盘文件。我抓住的一切都有一个PAGE_EXECUTE的保护标志。第二,如果我在不同的Win7 64bit机器上运行它,我得到相同的数据,只分成两半,顺序不同。我可以使用一些专家指导。 :)
编辑:另外,不知道为什么我这个问题为-1。如果我需要清除任何内容,请告诉我。
答案 0 :(得分:0)
将DLL注入目标进程并使用可执行文件的名称调用GetModuleHandle
。这将指向已加载到内存中的PE头。获得此信息后,您可以手动解析PE头,并找到.text
部分相对于内存中图像基址的位置。
答案 1 :(得分:0)
无需注入dll 使用本机api挂钩apis
答案 2 :(得分:0)
我学到了很多这个项目。我最终解析了PE头并使用该信息将我全部路由。最后,我完成了我的目标,结果我更有见识。