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