#BinDiff

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2026-01-05

@HexRaysSA somewhat underhandedly added Linux ARM64 builds in their new IDA Pro 9.3 beta.
I really need to find some time to work on #BinDiff...

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2025-10-29

PSA: If your #BinDiff workflow relies on a working BinExport for Ghidra, check github.com/google/binexport/pu.

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2025-07-17

Exciting! @vector35 's excellent #BinaryNinja ships with built-in BinExport in the latest dev version!
Here's how to use it with #BinDiff: dev-docs.binary.ninja/guide/bi

2025-05-24

#BinDiff for #IDA 9.x

github.com/Lil-Ran/build-bindi

Disclaimer: I haven't checked it, apply due caution

2025-01-27
ghidriff - mpengine.dll - VersionTrackingDiff - 1.1.24030.4 vs 1.1.24060.5

https://gist.github.com/v-p-b/f9aa39263e125c8e3b04c4d22fd4d78d#strings

This one executed much faster than SimpleDiff (with the O(n^2) FuncName:Param algorithm)!

Unfortunately the diff is so big it's difficult to judge quality, so the next step is to come up with some metrics that can be checked automatically.

#bindiff #ghidriff
2025-01-26
You diff binaries and immediately find the single change that adds the overflow check.

I diff mpengine.dll and break all reversing tools out there.

We are not the same.

https://gist.github.com/v-p-b/513a8f70a32c62f3ab7bf0d6a90e0941

#bindiff #ghidriff
Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2024-12-11

Ever wondered about how #BinDiff reads the BinExport2 format to build its flow graph representations?
This post by @williballenthin sheds some light on this:
williballenthin.com/post/binex

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2024-10-01

I'll end this on a more positive note by saying that github.com/google/binexport/pu at least enables the same workflow for IDA 9.0 as the one we use for Binary Ninja and Ghidra (export first, then invoke #BinDiff manually). 6/N

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2024-10-01

This is all a shame, really, as I would like to update #BinDiff to, e.g., use idalib for headless exports.
But right now, I don't have the time/capacity to work on any of this.
I'd rather spent my 20% time on more exciting parts of the project. Or maybe it's time to move on? 5/N

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2024-10-01

On top of that, #BinDiff can no longer just be installed, because 8.4 plugins will not load in IDA Pro 9.0 (and vice versa) and installing both means ugly error message each time IDA starts.
So I need to implement something to select the version (idaswitch?). 4/N

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2024-10-01

Supporting #BinDiff on 3 disassemblers (as a 20% project no less) is difficult enough, and initially, I was pleased that at least the 32-bit binaries are going away 2/N

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2024-09-06

PSA: An official #BinDiff that works with IDA 9.0 will be a bit delayed.
Good news is that there's a github.com/google/binexport/pu for BinExport that should allow to use BinDiff manually.
@HexRaysSA

Joxean Koret (@matalaz)joxean
2024-09-06

I have just stumbled upon this post diffing some windows driver:

crowdfense.com/windows-wi-fi-d

Why use and see this [first picture] when you can use and see this [second picture]?

Of course, feel free to use whatever tool you prefer but, what's the point of doing more work? Diaphora finds out that only 2 functions are interesting for patch diffing and shows exactly, in the pseudo-code, what new chunk of code was added and what new function is being called. Diffing decompilation.

Diffing with BinDiffDiaphora diffing the same drivers showing the only 2 interesting functions for patch diffing and the exact pseudo-code added, highlighting (manually) the newly added function.
Joxean Koret (@matalaz)joxean
2024-08-15

This is not at all my own idea and this is, basically, the only thing that academia researches as of today: almost every single academic paper published in the last years talking about binary diffing (or, as academia calls it "Binary Code Similarity Analysis") is based on "machine learning" techniques.

Some popular academic examples: DeepBinDiff or BindiffNN. Don't worry if you don't know them. Nobody uses them. At all.

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2024-08-12

Huh, with the new IDAlib headless mode in @HexRaysSA IDA 9.0, #BinDiff can get rid of the visible second IDA instance. Need to play around with this more.

2024-06-16

Meanwhile, while I'm on a #Ghidra bender this evening - I just found this neat tutorial on using Zynamics #BinDiff with Ghidra, via the #BinExport plugin:
0x90.se/reverse%20engineering/

I'm planning to give this a go - while I had access to IDA+Bindiff, I used it a fair bit.

Edit - in case you missed it, BinDiff and BinExport are also now open-source:
BinDiff: github.com/google/bindiff
BinExport: github.com/google/binexport

Joxean Koret (@matalaz)joxean
2024-01-09

It's very sad, but it's always a damn waste of time reading academic research about binary diffing or, as it's called at the academia, about binary code similarity analysis. It's either all fairytales that cannot be proved or, plainly, false and/or wrong.

An example? One paper that I have re-read today says that and are mono-architecture and totally discard these tools for the paper. LOL.

2023-12-04

I’ve finally played with the new #BinDiff and even though it requires just a few minutes to diff what #Diaphora is diffing for like 12 hours the output quality is just bad imo. I see some things that are clearly false positives and missing simple stuff like pseudo code or assembly diffing (I know it’s not too precise or even meaningful when there are more or less large changes, but it’s good for visualizing small patches) and buggy interface bring a lot of pain into using it. I sure hope I’m using it wrong and someone could correct me

Christian Blichmann🇺🇦AdmVonSchneider@infosec.exchange
2023-10-11

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst