Diaphora++ is a fork of Diaphora, the best IDA plugin for diffing binaries. Since 2024 Diaphora has not received any updates, and I found that it was lacking some features, so I took it upon myself to fork the project and add more stuff.
Diaphora has many of the most common program diffing (bindiffing) features you might expect, like:
- Diffing assembler.
- Diffing control flow graphs.
- Porting symbol names and comments.
- Adding manual matches.
- Similarity ratio calculation.
- Batch automation.
- Call graph matching calculation.
- Dozens of heuristics based on graph theory, assembler, bytes, functions' features, etc...
However, Diaphora has also many features that are unique, not available in any other public tool. The following is a non extensive list of unique features:
- Ability to port structs, enums, unions and typedefs.
- Potentially fixed vulnerabilities detection for patch diffing sessions.
- Support for compilation units (finding and diffing compilation units).
- Microcode support.
- Parallel diffing.
- Pseudo-code based heuristics.
- Pseudo-code patches generation.
- Diffing pseudo-codes (with syntax highlighting!).
- Scripting support (for both the exporting and diffing processes).
- ...
- Significant diffing speed improvements (5x speed)
- Heap size increases to alleviate SQLite reading bottleneck
- SQLite query modifications to increase speed
- orjson for faster json handling
- .diff export of function
- Better UI colors for dark mode
- Search within diff in IDA.
- cdifflib for faster diffing in python.
- MCP/AI powered diff analysis
Diaphora requires no installation: just download the code and run the script diaphora.py from within IDA or on the command line (only for diffing already exported databases). However, it can be integrated as a plugin into IDA by doing the following:
- Copy
plugins/diaphora_plugin.pyandplugins/diaphora_plugin.cfgto the IDA's plugins directory. - Edit
diaphora_plugin.cfgand set the path value to the Diaphora's directory.
You can help (or thank) the author of Diaphora by making a donation. If you feel like doing so you can use one of the following links:
If you are looking to how to automate the export or diffing process, or you want to speed operations, etc... You might want to take a look to the wiki where such questions are answered.
Diaphora++ finding the exact function where a vulnerability was patched in CVE-2025-43200:
Diaphora++, diffing the pseudocode part of the patch:
Diaphora++, diffing another part of the patch:
Diaphora++, assembly diffing view