| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
DiffRays is a research-oriented tool for binary patch diffing, designed to aid in vulnerability research, exploit development, and reverse engineering. It leverages IDA Pro and the IDA Domain API to extract pseudocode of functions and perform structured diffing between patched and unpatched binaries.
pip install diffraysIf you want to install from the latest development version:
git clone https://github.com/pwnfuzz/diffrays
cd diffrays
pip install .Setup IDADIR environment variable to point to your IDA installation directory:
Windows:
set IDADIR="[IDA Installation Directory]"
Linux:
export IDADIR="[IDA Installation Directory]"> diffrays --help
______ _ __ ________
| _ (_)/ _|/ _| ___ \
| | | |_| |_| |_| |_/ /__ _ _ _ ___
| | | | | _| _| // _` | | | / __|
| |/ /| | | | | | |\ \ (_| | |_| \__ \
|___/ |_|_| |_| \_| \_\__,_|\__, |___/
__/ |
|___/ v2.0 Tau
usage: diffrays [-h] {diff,server,autodiff} ...
Binary Diff Analysis Tool - Decompile, Compare, and Visualize Binary Changes
positional arguments:
{diff,server,autodiff}
Command to execute
diff Analyze two binaries and generate differential database
server Launch web server to view diff results
autodiff Auto-download binaries (via CVE or manual input) and run diff
options:
-h, --help show this help message and exit
Examples:
diffrays autodiff --cve CVE-2025-29824
diffrays autodiff -f clfs.sys -m 2025-09
diffrays autodiff -f clfs.sys -m 2025-09 -w 2023-H2
diffrays diff old_binary.exe new_binary.exe
diffrays diff old.so new.so -o custom_name.sqlite --log
diffrays server --db-path result_old_new_20231201.sqlite --debug
For more information, visit: https://github.com/pwnfuzz/diffrays
The autodiff command streamlines patch analysis by automatically fetching binaries (via CVE or manual parameters) and running a diff without manual downloads.
This works only for Windows components, not for other third-party products.
Example 1: Run by CVE
diffrays autodiff --cve CVE-2025-29824This will:
Example 2: Run by File + Month
diffrays autodiff -f clfs.sys -m 2025-09This will:
python diffrays.py diff old_binary.exe new_binary.exe python diffrays.py server --db-path diff_results.sqliteWhen diffing binaries that contain no symbols or are stripped, you can enable heuristic matching. With heuristic mode, functions are matched based on code patterns and structural similarity rather than function names.
Note: Heuristic matching does not guarantee 100% accurate function matches, but it generally works well and continues to improve.
python diffrays.py diff old_binary.exe new_binary.exe --heuristicCollect target binaries
curl -L -o clfs_10.0.22621.5037.sys https://msdl.microsoft.com/download/symbols/clfs.sys/4A2750956f000/clfs.sys
curl -L -o clfs_10.0.22621.5189.sys https://msdl.microsoft.com/download/symbols/clfs.sys/68C175656f000/clfs.sysRun DiffRays
python diffrays.py diff clfs_10.0.22621.5037.sys clfs_10.0.22621.5189.sysStart the web server
python diffrays.py server --db-path clfs_diff.sqliteBrowse interactively
Browse Diff Results
View Function Details
diffrays autodiff --cve CVE-2025-53149Automatic Analysis
Diffrays will:
- Identify the affected component.
- Download both vulnerable and patched binaries.
- Perform the diff and generate a results database automatically.
DiffRays takes inspiration from prior research and tools in the binary diffing space, including:
This project is intended for educational and research purposes only. The author does not condone or encourage malicious use of this tool.
This project is licensed under the MIT License - see the LICENSE file for details.
| Back | FazBrowse Home | New Git URL |