google / bindiff

Quickly find differences and similarities in disassembled code
https://zynamics.com/bindiff.html
Apache License 2.0
2.29k stars 148 forks source link

BinDiff displays blocks as 100% similar even though instruction operands differ #12

Open cblichmann opened 1 year ago

cblichmann commented 1 year ago

BinDiff doesn't detect a change between:

movups      b16 ds:[r8+rcx-16], b16 xmm0

and

movups      b16 ds:[r8+rcx+0x18], b16 xmm0

Ideally, the matched basic block should be "yellow" instead of "green":

69532690__16060079__68576

cblichmann commented 1 year ago

Possible implementation note: We can add an additional pass (after the main diffing run) to annotate these instruction level changes. This can even be trivially parallelized: As these are per instruction and hence also per basic block changes that won't influence control flow diffing.