Manpage logo

radiff2 -


radiff2 — Binary 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
−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.

SEE ALSO

radare2(1)

WWW

https://www.radare.org/

AUTHOR

pancake <[email protected]>


Updated 2026-06-01 - jenkler.se | uex.se