4

给定一个我想在运行时找到的地址,如果它属于 .text 部分(是否还有其他可执行部分?),则无需访问磁盘上的 PE 标头。
更多详细信息:
该地址在我正在运行的同一进程中,但它可以形成不同的 dll 静态库或运行该进程的可执行文件。
我正在使用 VS2010 Win32 的 Windows 上运行。

4

2 回答 2

4

你想要VirtualQuery。它填充了一个MEMORY_BASIC_INFORMATION结构。如果mbi.Type == MEM_IMAGE,您正在查看映射图像。您可能还想查看AllocationProtectto check forPAGE_EXECUTE或其变体之一(否则您可能会查看从可执行文件映射的只读数据之类的东西,例如位图资源或按该顺序排列的东西)。

于 2012-05-16T16:40:18.867 回答
0

考虑 DbgHelp API: http: //msdn.microsoft.com/en-us/library/ms679292 (v=vs.85 )

例如,

EnumerateLoadedModulesEx 为您提供有关已加载模块的基地址和大小的信息(因此您可以识别模块)

MapDebugInformation 检索有关模块部分的信息

于 2012-05-16T17:19:08.783 回答