IDA Pro 64 位偏移和操作码问题

逆向工程 艾达 聚乙烯 x64
2021-07-01 11:44:14

我正在 IDA 中查看 64 位 PE 文件。下面的说明在 offset 处访问未知数据20030通常当我查看 32 位 PE 文件时,偏移量也列在左侧操作码旁边。所以通常它会是“操作码”“偏移地址小端”。在这个例子中,操作码之后的字节不等于0x20030. 他们是0x10EE5B0D知道为什么不吗?有没有办法识别0x20030偏移量?IDA 清楚地知道数据在哪里,因为它给它命名"unk_180020030"

00000001800011CE 48 8D 0D 5B EE 01 00    lea rcx, unk_180020030
1个回答

正如您向我们展示的,操作码 48 8D 0D 5B EE 01 00由 IDA 转换为:

 lea rcx, unk_180020030

但是IDA是如何识别这个地址的呢?嗯,这都是关于相对偏移量的。这些操作码被真正翻译成以下程序集。我使用了radare2框架中的rasm2 ”,但您可以使用任何其他(1)选项(2)。

$ rasm2 -b 64 -d 488D0D5BEE0100
lea rcx, [rip + 0x1ee5b]

如您所见,0x1ee5b(而不是0x10EE5B0D) 在这种情况下是相对于RIP寄存器的。由于它是指令指针,您可以看出 RIP 将等于0x1800011CE您向我们展示的指令的地址。只需添加0x1ee5b它,您就会得到 IDA 计算出的地址。