RADIFF2(1)

NAME
radiff2 - 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)

  WWW
https://www.radare.org/

AUTHOR
pancake <pancake@nopcode.org>