为什么ida和gdb之间的偏移量存在差异?
逆向工程
艾达
数据库
2021-06-13 07:59:31
2个回答
对于“Position Independent Executable”二进制文件,加载器可以自由地使用某个基地址重新定位二进制文件。在 GDB 的情况下,二进制已经映射到内存中,0x2013a1内存操作数中的偏移量是相对于当前RIP(即下一条指令的地址)计算的。当前指令大小是0x6f - 0x68 = 0x7字节,所以考虑到当前指令的地址,我们有一个偏移量:
0x2013a1 + 0x7 = 0x2013a8
在 的情况下IDA,您看到“静态”虚拟地址,0x202010内存操作数中的偏移量是与代码段的基地址相对计算的,因此在考虑当前指令的地址时,我们有一个偏移量:
0x202010 - 0xc68 = 0x2013a8
这些值在两种情况下都是一致的。
IDA 显示了一个简化的操作数,其rip+<delta>值已解析,因此您不必自己计算。如果您愿意,可以通过在特定于处理器的选项中启用“显式 RIP 寻址”来查看 rip 相关指令的原始形式。
其它你可能感兴趣的问题

