gpt4 book ai didi

c++ - 获取二进制指令的内存地址

转载 作者:行者123 更新时间:2023-11-30 00:58:52 24 4
gpt4 key购买 nike

我目前正在处理一些系统级代码,我希望能够在其中识别来自已加载二进制文件的内存部分,以便检测损坏或修改的指令等内容;

本质上,我所追求的是一种在 Win32 中使用 C++ 获取指向指令范围的指针的方法。这有点类似于请求指向 .text 部分的开始和结束的函数指针。我对 exe 格式的理解是 .text 部分是存储指令的地方,而 .data 部分则保存全局变量之类的东西。不幸的是,我发现了 0 个关于这可能在哪里的提示(我没有看到 win32 函数调用,TIB 中什么也没有,等等)

谁能告诉我在哪里可以找到/计算这些信息?

附言我确实理解,如果有人恶意更改代码,他们可能会找到这段代码并进行更改;出于我自己的好奇心,我仍然对如何获取这些信息的细节感兴趣。

最佳答案

您真的不能指望它能与内存中的二进制文件一起使用。加载程序会修改对导入的 DLL 的任何函数调用,以指向加载的 DLL 中目标过程的实际位置。

例如,假设您调用了 kernel32.dll 中的一个函数。然后发生 Windows 更新,它更改了 kernel32.dll。下次运行应用时,kernel32.dll 中函数的跳转将跳转到与应用 Windows 更新之前不同的内存地址。

当然,这一切都假设 DLL 加载到它们的首选地址。然后你可能会有一些自修改代码。

等等,等等。

关于c++ - 获取二进制指令的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com