调试时,进程内存是否与调试器的内存空间相同?

逆向工程 艾达 调试 C
2021-06-26 00:48:13

这篇文章可能是针对 IDA Pro 的,所以请记住这一点。

我目前正在尝试编写一个插件来专门调试一个可执行文件。我知道可执行文件进程中的某个对象存在于 0xAB40C0(它始终存在于那里)。我可以简单地写 object* obj = (object*)0xAB40C0; 然后访问各个成员呢?

2个回答

不,调试器(您的插件在其进程上下文中运行)和调试对象是两个独立的进程。

您需要使用ReadProcessMemory()(或与您的操作系统等效的)来读取被调试对象的内存。

在 linux 的情况下,调试器通常使用 ptrace API 来检查和修改被调试进程的进程空间。不,他们不共享地址空间。

作为旁注,动态二进制检测框架(例如 PIN)确实涉及将自身插入到被检测二进制文件的进程空间中。