如何查找地址是否属于代码或数据部分

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

你想要VirtualQuery 。 它填充一个MEMORY_BASIC_INFORMATION结构。 如果mbi.Type == MEM_IMAGE ,您正在查看映射的图像。 你可能也想看一下AllocationProtect来检查PAGE_EXECUTE或者它的一个变种(否则你可能会看像从可执行文件映射的只读数据,比如位图资源或者这个订单上的东西)。

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

例如,

EnumerateLoadedmoduleesEx为您提供有关基地址和大小的已加载模块的信息(以便您可以标识模块)

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