即什么是 IDA API 等价于按“O”?
如何使用 IDA API 将立即更改为引用?
逆向工程
艾达
2021-07-03 16:59:33
1个回答
在 Python 中:
import ida_nalt
import ida_offset
ri.target = -1
ri.flags = 2
EA = 0xdeadbeef
OPND = 1
ida_offset.op_offset_ex(EA, OPND, ri)
其中 EA 是您要更改的行的地址,OPND 是您要更改的行中的立即数的操作数编号。
将特定部分中看起来像参考的所有内容都变成参考的示例脚本:
import sark, ida_nalt, ida_offset
ri = ida_nalt.refinfo_t()
ri.target = -1
ri.flags = 2
magic = [0x45670123]
segment_ranges = [(s.startEA, s.endEA) for s in sark.segments()]
def is_address(ea):
return any(start < ea < end for (start,end) in segment_ranges)
for l in sark.Segment(name='ROM').lines:
if not l.disasm.startswith('LDR '):
continue
if ', =0x' not in l.disasm:
continue
addr = int(l.disasm.split(', =0x')[-1],16)
if not is_address(addr) or addr in magic:
continue
ida_offset.op_offset_ex(l.ea,1,ri)