给定一个地址我想在运行时找不到访问磁盘上的PE头,如果它属于.text部分(是否还有其他可执行部分?)。
更多细节:
该地址与我正在运行的进程相同,但它可以构成一个不同的dll静态库或运行该进程的可执行文件。
我正在使用VS2010 Win32在Windows上运行。
答案 0 :(得分:4)
你想要VirtualQuery
。它填充MEMORY_BASIC_INFORMATION
结构。如果mbi.Type == MEM_IMAGE
,您正在查看映射的图像。您可能还想查看AllocationProtect
以检查PAGE_EXECUTE
或其中一个变体(否则您可能会查看从可执行文件映射的只读数据,例如位图资源或那个订单上的东西)。
答案 1 :(得分:0)
考虑DbgHelp API:http://msdn.microsoft.com/en-us/library/ms679292(v=vs.85)
例如,
EnumerateLoadedModulesEx为您提供有关基本地址和大小的已加载模块的信息 (所以你可以识别模块)
MapDebugInformation检索有关模块部分的信息