offensive-tools/rev/radare2/SKILL.md
CLI reverse engineering framework with disassembly, decompilation (r2ghidra/r2dec), debugging, ESIL emulation, scripting, and binary patching. Use when analyzing binaries headlessly, scripting RE tasks via r2pipe, patching executables, diffing firmware, emulating code, or working in resource-constrained/headless environments.
npx skillsauth add aeondave/malskill radare2Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
CLI RE framework — disassemble, decompile, debug, emulate, patch, and script binary analysis.
# Linux/macOS
git clone https://github.com/radareorg/radare2 && cd radare2 && sys/install.sh
# OR: apt install radare2
# Windows: download from https://github.com/radareorg/radare2/releases
# Decompiler plugins
r2pm -ci r2ghidra # Ghidra decompiler in r2
r2pm -ci r2dec # Alternative decompiler
# Open binary (read-only)
r2 ./binary
# Analyze all (auto-analysis)
> aaa
# List functions
> afl
# Disassemble function
> pdf @ main
# Decompile function (requires r2ghidra or r2dec)
> pdg @ main
# Print strings
> iz
# Quit
> q
| Command | Purpose |
|---------|---------|
| aaa | Full auto-analysis |
| aaaa | Experimental deep analysis |
| afl | List all functions |
| afn NAME ADDR | Rename function |
| s ADDR | Seek to address |
| pdf @ FUNC | Disassemble function |
| pdg @ FUNC | Decompile function (r2ghidra) |
| pdd @ FUNC | Decompile function (r2dec) |
| V | Visual mode |
| VV | Visual graph mode |
| p | Cycle view in visual mode |
| Command | Purpose |
|---------|---------|
| i | File info (format, arch, bits) |
| iS | List sections |
| ii | List imports |
| iE | List exports |
| iz | Strings in data sections |
| izz | Strings in whole binary |
| ir | Relocations |
| il | Libraries (linked) |
| iH | Binary header info |
| ie | Entrypoints |
| Command | Purpose |
|---------|---------|
| / STRING | Search string |
| /x HEXBYTES | Search hex pattern |
| /R OPCODE | Search ROP gadgets |
| /r ADDR | Find references to address |
| axt ADDR | Cross-references to address |
| axf ADDR | Cross-references from address |
| Command | Purpose |
|---------|---------|
| ood [args] | Reopen in debug mode |
| db ADDR | Set breakpoint |
| dc | Continue |
| ds | Step into |
| dso | Step over |
| dr | Show registers |
| dr rax=0 | Set register |
| dm | Memory map |
| dmi libc | Symbols in module |
| dtf FUNC FMT | Trace function with format |
| dts+ | Create trace session |
| dk %SIGNAL | Send signal |
| Command | Purpose |
|---------|---------|
| px N @ ADDR | Hex dump N bytes |
| ps @ ADDR | Print string |
| pf FMT @ ADDR | Print formatted (struct) |
| wa INSTR @ ADDR | Write assembly |
| wx BYTES @ ADDR | Write hex bytes |
| wt FILE SIZE @ ADDR | Write to file |
| Command | Purpose |
|---------|---------|
| aei | Initialize ESIL VM |
| aeim | Initialize ESIL memory/stack |
| aeip | Set ESIL PC to entrypoint |
| aes | Step one instruction in ESIL |
| aeso | Step over in ESIL |
| aer | Show ESIL registers |
| ae EXPR | Evaluate ESIL expression |
r2 malware.exe
> aaa
> afl~main # Grep for main in function list
> iz~http # Grep strings for http
> ii~Crypt # Grep imports for crypto
> pdf @ sym.main
> pdg @ sym.main # Decompile
# Compare two versions of a binary
radiff2 -g main original.exe patched.exe | xdot -
# Or inside r2:
r2 -m 0x10000 original.exe
> o patched.exe 0x20000
> c 256 @ 0x10000
r2 -d malware.exe
> aaa
> db sym.main
> dc # Continue to main
> db 0x401234 # Break at interesting address
> dc
> dr # Inspect registers
> px 64 @ rsp # Stack dump
> dm # Check memory map for injected regions
r2 -w ./binary
> s 0x401234
> pd 3 # Print 3 instructions to verify location
> wa nop; nop; nop # Patch with NOPs
> wa jmp 0x401300 # Or redirect flow
> wt patched.bin # Save to new file
> q
import r2pipe
r2 = r2pipe.open('./malware')
r2.cmd('aaa')
# Get function list as JSON
funcs = r2.cmdj('aflj')
for f in funcs:
print(f"{f['offset']:#x}: {f['name']} ({f['size']} bytes)")
# Get strings and filter
strings = r2.cmdj('izj')
for s in strings:
if any(kw in s['string'].lower() for kw in ['http', 'exec', 'cmd']):
print(f" {s['vaddr']:#x}: {s['string']}")
# Disassemble function as JSON
main_ops = r2.cmdj('pdfj @ main')
for op in main_ops.get('ops', []):
if 'call' in op.get('type', ''):
print(f" CALL at {op['offset']:#x}: {op.get('disasm', '')}")
r2.quit()
r2 -p myproject ./binary
> aaa
> Ps myproject # Save project
> q
# Later:
r2 -p myproject # Reopen with all analysis intact
| File | When to load | |------|--------------| | references/r2pipe-recipes.md | r2pipe Python scripting recipes | | references/debugging-guide.md | Debugging and ESIL emulation workflows |
data-ai
Scoped routing: Linux operator; hosts, sessions, users, services, packages, logs, containers, SSH, network paths, privilege evidence.
development
Offensive methodology for ICS/OT/SCADA environments in authorized industrial penetration testing and red team operations. Use when assessing PLCs, RTUs, HMIs, engineering workstations, historians, or field devices running Modbus, DNP3, EtherNet/IP, S7comm/S7+, Profinet, IEC 60870-5-104, BACnet, or OPC-UA. Covers passive OT network enumeration, protocol-level device interrogation, PLC coil/register read-write attacks, HMI session exploitation, historian and engineering workstation compromise, and safe escalation rules for critical infrastructure scope. Does not cover: general IT network exploitation (network-technique), physical hardware interfaces UART/JTAG/SPI (hardware-technique), wireless sensor network attacks (wireless-technique), RF/SDR signal analysis (hardware-ctf or wireless-technique), or CTF-framed ICS lab tasks (ics-ctf).
tools
Offensive methodology for authorized game security assessments, game client security research, and game-adjacent penetration testing in real-world engagements. Use when assessing game clients for cheating vulnerabilities, testing anti-cheat effectiveness, auditing game server protocols for score manipulation or economic fraud, reverse engineering game DRM or license validation, analyzing game save file protection, or assessing game mod/plugin security. Covers: process memory scanning and manipulation (Cheat Engine methodology), game binary reversing for license and DRM bypass, game network protocol analysis and packet replay, anti-cheat mechanism analysis, save file format reversing and tampering, speed hack and value injection techniques. Does NOT cover: CTF game challenges (game-ctf), game engine source code auditing (web-exploit-technique or vuln-search-technique for the backend), or general binary exploitation (pwn-ctf or reversing-technique).
development
Auth assessment: hardware/embedded methodology; UART/JTAG/SWD/SPI/I2C, firmware extraction, boot/debug paths, embedded OS evidence.