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

标签 c++ windows portable-executable

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

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/

相关文章:

c# - 我可以以编程方式启动 Windows Management Instrumentation 服务吗?

c++ - Windows可执行文件向前和向后兼容吗?

c++ - Windows 下的确定性构建

c++ - 在 C++ 中切换类实现的使用

windows - Dyalog APL 语言栏丢失

windows - Windows 命令行上的 wget

c++ - 向 PE 文件添加一个部分,将入口点更改为新部分并执行任何代码

尝试呈现 SDL_Texture : Invalid texture 时出现 C++ SDL2 错误

c++ - 问题生产者消费者中的竞争条件

c# - linux下C++中Gmap.Net的替代品