我可以通过执行以下命令成功检索加载到我的进程中的模块的基地址:
MODULEINFO mInfo;
GetModuleInformation(GetCurrentProcess(),GetModuleHandle(L"moduleName"),&mInfo,sizeof(mInfo));
LPVOID baseAddress = mInfo.lpBaseOfDll;
但是现在如何检索该模块的 .text
部分的开始和结束地址?
最佳答案
应用程序和模块(又名任何可执行代码)是基于 Microsoft 指定的所谓“Portable Executable”格式构建的。为了检索您想要的信息,您必须遍历内存中的逻辑表,并根据 PE 格式访问所需的成员。部分托管数据和代码。为了检索一个部分(例如 .text)的开始和结束,您必须检查部分标题并检索它是否可执行。 Matt Pietrek已经编写了必须被视为“PE”介绍的标准文件。
关于c++ - Windows:获取 .text 部分的开始和结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11083139/