如何使用英特尔手册解释二进制指令

逆向工程 吉德拉 x86-64 英特尔
2021-06-15 04:25:07

行。所以我真的想弄清楚如何为自己使用“Intel 64 and IA-32 Architectures Software Developer's Manual”,因为它似乎是 x86(_64) 机器代码的权威来源。

我正在查看 Ghidra 中的一个程序(特别是一个动态链接到我真正关心的程序的 .so 文件)。.so 文件的文件信息:

ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked

我在 Ghidra 中得到以下说明:

ff 25 de ad be ef  --- deadbeef being a substitute for the real bytes.

我设置了 Ghidra,以便我可以右键单击指令并转到处理器手册中的相关页面,这将我带到 JMP 参考(我拥有的手册版本中的第 590 页)。凉爽的。

通过查看那里的选项,我找到了ff与我正在查看的指令相对应操作码行。此外,我知道我的ModR/M字节25H对应MOD = 00BREG = 100BR/M = 101B让我知道,这个范围缩小到FF /4行中的JMP指令描述表。但是我怎么知道它指的是JMP r/m16orJMP r/m32还是JMP r/m64还有这三者有什么区别?此外,我通过查看表 2-1 到 2-3(结合 Ghidra 解释指令的方式)知道de ad be ef实际上最终是一个被添加到索引中的 disp32。但是我怎么知道要在表 2-1 到 2-3 中引用哪个表,以及该信息如何对应于在之间进行选择JMP r/m16JMP r/m32JMP r/m64?

0个回答
没有发现任何回复~