radiff21
Usage
radiff2 [-abcCdDehiJjlmnoOprqsStuUvVxXzZ]
[-A
[A]]
[-B
addr]
[-g
sym]
[-m
mode]
[-o
offset]
[-l
length]
[-t
%]
[-S
name]
file1
file2
radiff2 – Binary Diffing Utility
Overview
A utility for diffing binary code and data within the Radare2 suite, supporting architecture and bits specification, delta diffing, and graph-based comparisons.
It supports a wide range of formats and features, including architecture and bits specification, delta diffing, graph diffing, and more.
Options
-
-a arch -
Specify architecture plugin to use (x86, arm, etc.).
-
-A [A] -
Run aaa or aaaa after loading each binary (see -C).
-
-b bits -
Specify register size for architecture (16 (thumb), 32, 64, etc.).
-
-B addr -
Define the base address to add the offsets when listing.
-
-c cmd -
Run an r2 command on every RCore instance created.
-
-C -
Graphdiff code (columns: off-A, match-ratio, off-B) (see -A).
-
-d -
Use delta diffing.
-
-D -
Show disasm instead of hexpairs.
-
-e k=v -
Set eval config var value for all RCore instances.
-
-f format -
Select output format (see -f help for details).
-
-g sym -
Graph diff of [sym] or functions in [off1,off2].
-
-i type -
Compare bin information (imports, exports, symbols, sections, etc.). See -i help for details.
-
-j -
Output in JSON format.
-
-l len -
Specify final offset (length) for diffing, can use A:B format to specify different lengths for each file.
-
-m mode -
Choose the graph output mode (aditsjJ). See -m help for details.
-
-n -
Count number of changes.
-
-o offset -
Specify initial offset for diffing, can use A:B format to specify different offsets for each file.
-
-O -
Code diffing with opcode bytes only.
-
-p -
Use physical addressing (io.va=false) (only for radiff2 -AC).
-
-q -
Quiet mode (disable colors, reduce output).
-
-r -
Output in radare commands.
-
-s -
Compute edit distance (no substitution, Eugene W. Myers O(ND) diff algorithm).
-
-ss -
Compute Levenshtein edit distance (substitution is allowed, O(N^2)).
-
-S name -
Sort code diff (name, namelen, addr, size, type, dist) (only for -C or -g).
-
-t % -
Set threshold for code diff (default is 70%).
-
-T -
Analyze files in threads (EXPERIMENTAL, 30% faster and crashy).
-
-u -
Unified output (---+++).
-
-U -
Unified output using system 'diff'.
-
-v -
Show version information.
-
-V -
Be verbose (current only for -s).
-
-x -
Show two-column hexdump diffing.
-
-X -
Use xpatch format for the diffing output.
Environment
No environment variables are used.
GRAPH OUTPUT FORMATS (-m [mode])
-a-
ASCII art (default).
-s-
r2 commands.
-d-
Graphviz dot.
-g-
Graph Modelling Language (GML).
-j-
JSON.
-J-
JSON with disassembly.
-k-
sdb key-value.
-t-
Tiny ASCII art.
-i-
Interactive ASCII art.
Usage examples
- Comparing two binaries
-
$ radiff2 bin1 bin2
- Using graph diffing to compare functions by name
-
$ radiff2 -g main bin1 bin2
- Counting the number of changes between two binaries
-
$ radiff2 -n bin1 bin2
- Outputting the diff in a unified format
-
$ radiff2 -u bin1 bin2
- Comparing the opcodes of two functions
-
$ radiff2 -O bin1 bin2
- Compare specific sections of binaries with custom offsets
-
$ radiff2 -o 0x1000 bin1 bin2
- Compare different sections with different offsets
-
$ radiff2 -o 0x1000:0x2000 bin1 bin2
- Compare specific lengths from given offsets
-
$ radiff2 -o 0x1000 -l 0x500 bin1 bin2
RADARE2 commands
The 'c' command in r2 is used for various comparison operations within data inside the same file. Here are some examples of its usage:
- Compare a plain string with escaped chars
-
c "string to compare"
- Compare byte at a specific address with current offset
-
c1 0x100
- Compare block size bytes from current offset and the 0x100 offset
-
cc 0x100
- Unified diff of disassembly from current seek and given address
-
cud 0x200 @ 0x100
- Compare memory hexdumps in unified diff format
-
cu 0x100 @ 0x200
For more detailed usage of the 'c' command, refer to the `c[?dfx] [argument]` help section.
WWW
https://www.radare.org/
Releases
3 releases since Debian 7 (Wheezy); the text changed 2 times.
-A since Arch Linux 2026-11-01;
-B since Arch Linux 2026-11-01;
-D since Arch Linux 2026-11-01;
-S since Arch Linux 2026-11-01;
-T since Arch Linux 2026-11-01;
-U since Arch Linux 2026-11-01;
-V since Arch Linux 2026-11-01;
-X since Arch Linux 2026-11-01;
-a since Arch Linux 2026-11-01;
-b since Arch Linux 2026-11-01;
-e since Arch Linux 2026-11-01;
-f since Arch Linux 2026-11-01;
-i since Arch Linux 2026-11-01;
-j since Arch Linux 2026-11-01;
-l since Arch Linux 2026-11-01;
-m since Arch Linux 2026-11-01;
-n since Arch Linux 2026-11-01;
-o since Arch Linux 2026-11-01;
-q since Arch Linux 2026-11-01;
-ss since Arch Linux 2026-11-01;
-u since Arch Linux 2026-11-01;
-x since Arch Linux 2026-11-01.
-h until Debian 8 (Jessie).