枚举特定段中地址的所有外部参照的最佳方法是什么?我想出了一种蛮力方法(如下所示)。代码扫描段中的每个地址并检查地址的 XrefTo。
seg_list = []
for seg in Segments():
seg_list.append(seg)
# logic will be added to remove section that are code later
seg_list.reverse()
for seg in seg_list:
start = SegStart(seg)
end = SegEnd(seg)
while start < end:
gen_xrefs = XrefsTo(start, 0)
for xx in gen_xrefs:
print hex(start), hex(xx.frm)
start += 1
如果我有多个大段,这种方法非常耗时。IDADATA XREF
在手动查看数据时添加注释。这些外部参照是从 IDAPython 以可访问的方式存储的,还是有另一种更实用的方法来查找某个段的外部参照?
mem_15d:00973000 dd 1C8h dup(0)
mem_15d:00973720 dword_973720 dd 101011Ch, 1000h ; DATA XREF: mem_f08:00970678o
mem_15d:00973728 off_973728 dd offset off_970178 ; DATA XREF: mem_f08:off_970178o
mem_15d:00973728 ; mem_f08:0097017Co
注意:不能从代码中枚举所有外部参照。