samples/dasm-plugins/scanxrefs.rb in metasm-1.0.2 vs samples/dasm-plugins/scanxrefs.rb in metasm-1.0.3

- old
+ new

@@ -5,14 +5,15 @@ # metasm dasm plugin: scan for xrefs to the target address, incl. relative offsets (eg near call/jmp) def scanxrefs(target) ans = [] + msk = (1 << cpu.size) - 1 sections.sort.each { |s_addr, edata| raw = edata.data.to_str (0..raw.length-4).each { |off| r = raw[off, 4].unpack('V').first - ans << (s_addr + off) if (r + off+4 + s_addr)&0xffffffff == target or r == target + ans << (s_addr + off) if (r + off+4 + s_addr) & msk == target or r == target } } ans end