Windows:获取.text部分的开始和结束

时间:2012-06-18 12:42:10

标签: c++ windows portable-executable

我可以通过执行以下命令成功检索我的进程中加载​​的模块的基址:

MODULEINFO mInfo;
GetModuleInformation(GetCurrentProcess(),GetModuleHandle(L"moduleName"),&mInfo,sizeof(mInfo));
LPVOID baseAddress = mInfo.lpBaseOfDll;

但是现在如何检索该模块的.text部分的起始和结束地址?

1 个答案:

答案 0 :(得分:2)

应用程序和模块(也称为任何可执行代码)是基于Microsoft指定的所谓“Portable Executable”格式构建的。为了检索所需的信息,您必须遍历内存中的逻辑表,并根据PE格式访问所需的成员。部分托管数据和代码。为了检索节的开头和结尾(例如.text),您必须检查节标题并检索它是否可执行。 Matt Pietrek编写了标准文件,必须将其视为PE的“引入”。