Scroll to navigation

RADIFF2(1) General Commands Manual RADIFF2(1)
radiff2Binary Diffing Utility

SYNOPSIS

radiff2 [-abcCdDehiJjlmnoOprqsStuUvVxXzZ] [-A [A]] [-B addr] [-g sym] [-m mode] [-o offset] [-l length] [-t %] [-S name] file1 file2

DESCRIPTION

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

arch
Specify architecture plugin to use (x86, arm, etc.).
[A]
Run aaa or aaaa after loading each binary (see -C).
bits
Specify register size for architecture (16 (thumb), 32, 64, etc.).
addr
Define the base address to add the offsets when listing.
cmd
Run an r2 command on every RCore instance created.
Graphdiff code (columns: off-A, match-ratio, off-B) (see -A).
Use delta diffing.
Show disasm instead of hexpairs.
k=v
Set eval config var value for all RCore instances.
format
Select output format (see -f help for details).
sym
Graph diff of [sym] or functions in [off1,off2].
type
Compare bin information (imports, exports, symbols, sections, etc.). See -i help for details.
Output in JSON format.
len
Specify final offset (length) for diffing, can use A:B format to specify different lengths for each file.
mode
Choose the graph output mode (aditsjJ). See -m help for details.
Count number of changes.
offset
Specify initial offset for diffing, can use A:B format to specify different offsets for each file.
Code diffing with opcode bytes only.
Use physical addressing (io.va=false) (only for radiff2 -AC).
Quiet mode (disable colors, reduce output).
Output in radare commands.
Compute edit distance (no substitution, Eugene W. Myers O(ND) diff algorithm).
Compute Levenshtein edit distance (substitution is allowed, O(N^2)).
name
Sort code diff (name, namelen, addr, size, type, dist) (only for -C or -g).
%
Set threshold for code diff (default is 70%).
Analyze files in threads (EXPERIMENTAL, 30% faster and crashy).
Unified output (---+++).
Unified output using system 'diff'.
Show version information.
Be verbose (current only for -s).
Show two-column hexdump diffing.
Use xpatch format for the diffing output.

ENVIRONMENT

No environment variables are used.

GRAPH OUTPUT FORMATS (-m [mode])

ASCII art (default).
r2 commands.
Graphviz dot.
Graph Modelling Language (GML).
JSON.
JSON with disassembly.
sdb key-value.
Tiny ASCII art.
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.

SEE ALSO

radare2(1)

WWW

https://www.radare.org/

AUTHOR

pancake <pancake@nopcode.org>

July 10, 2025