【发布时间】:2012-05-07 23:27:11
【问题描述】:
现在我从 EIP 寄存器中得到了一个机器指令的地址。这条机器指令可以改变某个内存区域的值,我确实想要但无法获得这块内存的地址。
当然,我可以从机器指令的地址读取数据,但内容是机器指令,如:0x8b0c4d8b……,不可读(我不能使用gdb之类的调试工具)。
如何获取一条机器指令写入的地址?
【问题讨论】:
-
使用调试器 - 在该指令的地址处设置断点,然后在遇到断点时检查 EIP - 这是唯一可靠的方法。
-
但是 EIP 是指令的地址,对吗?我仍然无法获得该指令将写入的地址。
-
我认为@PaulR 说错了;尽管如此,您仍然必须使用反汇编程序(或内置工具)或编写自己的知道如何反汇编 x86 操作码的工具。
-
@geekosaur,我已经编写了自己的调试工具,它是一个简单的调试器,没有符号支持和反汇编支持。但似乎很难反汇编 x86 操作码。
-
抱歉 - 我的意思是“检查相关寄存器”,当然不是“检查 EIP”。
标签: linux debugging disassembly instructions