获取间接内存地址引用的 IDAPython api

逆向工程 艾达 蟒蛇
2021-07-03 20:39:35

我目前正在学习使用 IDAPython 对许多二进制文件进行自动分析。一些二进制文件通过添加基地址和偏移量将内存地址加载到寄存器中,而 idautils.XrefsTo() 无法检测到。例如:

在此处输入图片说明

在此处输入图片说明

但是,IDA-View 可以检测到该引用类型。我的问题是,是否有任何其他 IDAPython api 可以检测到,或者任何人都知道 IDA-View 背后的脚本可以做到这一点?谢谢你。

1个回答

我不是100%肯定,但我相信IDA-查看并不能识别操作为你的情况所抵消。否则它会将它拆解为addi r4, r9, offset aTelnet ; "TELNET"或类似的东西。要将操作数转换为偏移量,您可以尝试使用idc.op_plain_offset()函数。我无法说出您的情况的确切语法,因为我没有地址,但它可能类似于idc.op_plain_offset(ea, 2, idc.get_segm_start(ea))假设ea是指令地址,2 是操作数索引(第三个操作数),即偏移量和基地址是该指令所属段的开头。

希望有帮助。