radiff2 - Man Page

binary diffing utility

Synopsis

radiff2 [-1abcCdeGhijnropqsSxuUvVzZ] [-A[A]] [-B #] [-g sym] [-m graph_mode][-t %] file file

Description

radiff2 is a tool from the radare2 suite designed for binary diffing code and data.

It supports a wide range of formats and features, including architecture and bits specification, delta diffing, graph diffing, and more.

Options

-1

Output in Generic binary DIFF (0xd1ffd1ff magic header).

-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 [baddr]

Define the base address to add the offsets when listing.

-c

Count of changes.

-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.

-g [arg]

Graph diff of [sym] or functions in [off1,off2].

-G [cmd]

Run an r2 command on every RCore instance created.

-i [ifscm]

Diff imports | fields | symbols | classes | methods.

-j

Output in JSON format.

-m [mode]

Choose the graph output mode (aditsjJ).

-n

Print bare addresses only (diff.bare=1).

-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 [0-100]

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

Show two-column hexII diffing.

-z

Diff on extracted strings.

-Z

Diff code comparing zignatures.

GRAPH OUTPUT FORMATS (-m [mode])

.

default is ASCII art.

s

r2 commands.

d

Graphviz dot.

g

Graph Modelling Language (gml).

j

JSON.

J

JSON with disarm.

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 -c bin1 bin2

Outputting the diff in a unified format

radiff2 -u bin1 bin2

Comparing the opcodes of two functions

radiff2 -O bin1 bin2

'c' Command in R2

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)

https://www.radare.org/

Author

pancake <pancake@nopcode.org>

Referenced By

radare2(1).

radiff2 tool Mar 16, 2024