Can matching blocks prove two binaries behave the same?
This browser demo pairs blocks with identical IDs and compares their supplied label text. Presets illustrate differences; Custom Input accepts block-label JSON, not executable binaries. It performs no lifting or QBinDiff analysis.
IDs determine correspondence. Renaming an ID makes otherwise identical text appear added/deleted. Line differences align by position; they are not semantic proofs or an instruction-aware edit script. A metric alone cannot certify a patch or vulnerability.
Keep ID bb0 on both sides but change mov eax, 0 to mov eax, 1. The shared-ID fraction stays 1 / 1; the identical-label fraction becomes 0.00 and the character edit count becomes 1. Custom blocks have no edges, so 1.00 edge overlap means an empty edge union, not proven structural equivalence.
Binary Ninja’s IL family represents native instruction semantics at several abstraction levels. LLIL retains lower-level operations; MLIL introduces variables and data-flow analysis; HLIL adds higher-level control flow and simplification. This page displays authored examples of those forms. If a preset lacks the selected view, the selector now switches to its MLIL fallback. Binary Ninja: BNIL overview
Quarkslab describes QBinDiff as experimental graph alignment using configurable features and relationships between functions. This page’s shared-ID lookup is a different, much simpler comparison; the project link explains the actual tool rather than validating these scores. Quarkslab: QBinDiff project
Identical-label fraction counts equal trimmed labels over all distinct IDs. Shared block IDs includes modified labels. Labeled-edge overlap compares exact source-to-target strings. Label-character edits sum text Levenshtein distances for shared IDs. Export includes these definitions and the demonstration scope.
Actual LLIL, MLIL and HLIL concepts, not analysis performed here.
Actual graph-alignment approach and configurable features, not these demo metrics.