Radare2 (r2) est un framework de reverse engineering open-source (LGPLv3) créé en 2006 par Sergi « pancake » Àlvarez Capilla initialement pour le forensic sur disques, devenu en 18+ ans la référence CLI-first des outils reverse gratuits. Il supporte plus de 40 architectures (x86/x64, ARM/AArch64, MIPS, PowerPC, RISC-V, 8051, Z80, GameBoy, m68k, SPARC, SuperH, AVR, PIC, etc.), tous les formats binaires majeurs (PE, ELF, Mach-O, raw, firmware, DEX Android, fat Mach-O, COFF), un scripting extensif via r2pipe (Python, Ruby, Go, JavaScript, Rust, C), un debugger intégré (gdb, lldb compat), l'émulation ESIL (Evaluable String Intermediate Language), et un écosystème de plugins riche via r2pm. Avec ~20 000 stars GitHub (radareorg/radare2) fin 2024, c'est le troisième outil reverse le plus utilisé après IDA Pro et Ghidra. Rizin, fork de Radare2 lancé en décembre 2020 par une partie de la communauté initiale, modernise le codebase avec une API plus propre, maintient compatibilité fonctionnelle avec Radare2, et propulse désormais Cutter (GUI depuis 2017 initialement sur Radare2, migrée Rizin en 2021). La décompilation en pseudo-C — absente nativement historiquement — s'obtient via r2ghidra (plugin community qui wrap le décompilateur Ghidra, commande pdg), r2dec (décompilateur natif JavaScript, commande pdd) ou Rizin RzDec. Radare2 se distingue fondamentalement de Ghidra et IDA Pro par sa philosophie CLI-first : workflow terminal pur, scripting roi, automation à grande échelle. Les cas d'usage 2025 dominants : automation pipelines malware analysis 1000+ samples/jour, exotic architectures non supportées ailleurs (consoles retro, firmware industriel custom), forensic disk imaging, CTF binary rapide, formation reverse engineering (communauté FR via pancake conférences SSTIC / Pass the SALT). Cet article détaille la genèse et philosophie Radare2, le fork Rizin 2020 et ses différences, l'architecture des commandes avec les 30 essentielles, le scripting r2pipe avec exemples Python production, la décompilation via r2ghidra/r2dec, la GUI Cutter, la comparaison avec Ghidra / IDA Pro / Binary Ninja, les cas d'usage concrets, et les limites où d'autres outils restent préférables. Pour le comparatif détaillé Ghidra, voir Ghidra : à quoi ça sert. Pour le panorama analyse statique vs dynamique, Analyse statique vs dynamique.
1. Genèse et philosophie Radare2
1.1 Histoire
Radare est né en 2006 du projet personnel de Sergi « pancake » Àlvarez Capilla — un Catalan de Barcelone alors forensic investigator — pour un besoin précis : naviguer et patcher des disques durs à la recherche de fragments récupérables. Le premier commit est un outil hexadécimal interactif. Sur 18+ ans, il a muté en framework reverse engineering complet.
Timeline Radare/Radare2
────────────────────────
2006 Radare v1 — hex editor CLI pour forensic
2009 Radare2 — réécriture complète, architecture modulaire
2013 Premier release stable avec auto-analysis
2016 Integration décompilateur expérimental
2017 Cutter GUI initiale (sur Radare2)
2018 Ecosystème r2pipe mature (Python, Go, JS, Ruby)
2019 Ghidra release → déplacement communauté partiel
2020 Déc Rizin fork annoncé (HACKATHON community)
2021 Cutter migre Rizin
2022+ Coexistence Radare2 + Rizin, convergence ou divergence ?
2025 Radare2 5.9.x, Rizin 0.8.x, Cutter 2.4.x (sur Rizin)1.2 Philosophie CLI-first
Contrairement à Ghidra (GUI Java-first) et IDA Pro (GUI Qt-first), Radare2 est CLI-first :
- Workflow terminal : clavier uniquement, commandes courtes, navigation efficiente.
- Scripting roi : chaque action UI a un équivalent CLI, tout est automatable.
- Modularité extrême :
radare2est un coquille autour de composants séparés (r2_core,r2_io,r2_bin,r2_asm,r2_anal). - Unix-like : grep/awk friendly, pipes, JSON output avec suffixe
j.
Cette philosophie a des conséquences positives (puissance automation, légèreté) et négatives (courbe d'apprentissage raide, UX austère pour débutants).
1.3 Culture communautaire
Radare2 a une culture hacker forte incarnée par pancake et la communauté :
- r2con : conférence annuelle Barcelone (reprise post-COVID en 2023).
- Radare2 Book : livre OSS communautaire (radareorg.github.io/radare2book).
- Discord + IRC : #radare2 sur Libera.Chat, Discord r2con.
- Conférences : SSTIC France, Pass the SALT FR, DEF CON, Hack.lu.
- FR community : pancake parle FR, présentations SSTIC, écosystème recherche français actif.
2. Radare2 vs Rizin : le fork 2020
2.1 Contexte du fork
En décembre 2020, après un hackathon communautaire, plusieurs contributeurs historiques de Radare2 lancent Rizin — fork du codebase avec objectifs :
- Modernisation du code (API, C moderne).
- Gouvernance communautaire plus formalisée (RFCs, reviews).
- Breaking changes assumés pour qualité long terme.
- Documentation améliorée.
- Stabilité API garantie (contract plus strict).
Radare2 continue maintenu par pancake + core team historique avec rythme de features soutenu.
2.2 Différences pratiques 2025
| Dimension | Radare2 | Rizin |
|---|---|---|
| Date fork | Projet original 2006 | Fork déc 2020 |
| Maintenance | pancake + core team | Équipe Rizin community |
| API stability | Breaking changes fréquents | Plus stable (semver strict) |
| Commandes | Standard historique | Compat + évolutions |
| Documentation | Book officiel + CLI help | Book Rizin + doc améliorée |
| GUI | Cutter (migré Rizin 2021) | Cutter (natif Rizin) |
| Communauté | Forte, pancake driven | Community-driven |
| Usage 2025 | Users historiques, scripts legacy | Nouveaux users, formations |
2.3 Commandes compatibles
90 % des commandes fonctionnent identiquement. Exemples :
# Ces commandes fonctionnent dans les deux
r2 /bin/ls # ou rizin /bin/ls
aa # analyze all
pdf @main # print disassembly function main
afl # list functions
pd 10 # print 10 instructions
s 0x401000 # seek address
V # visual modePour Radare2 historique : r2, radare2. Pour Rizin : rizin, rz-asm, rz-find, etc.
3. Architecture des commandes
3.1 Design minimaliste
Les commandes Radare2 sont composables selon un schéma : COMMAND[SUBCOMMAND][MODIFIER][FILTER]. Une seule lettre = une commande, sous-commandes chainables.
Préfixes de commandes Radare2 par famille
──────────────────────────────────────────
a analyse (analysis)
p print (disassembly, data, hex)
s seek (navigation)
i info (binary info)
f flag (labels, markers)
c compare (binaries, strings)
d debug
w write (patching)
r resize / remove
V visual mode interactive
! shell command
? help (? [command] for details)
~ grep filter (pipe-like)
$ macros
@ temporary seek
> write output to file
j json output suffix3.2 Les 30 commandes essentielles
Suffisant pour 80 % des workflows :
Commandes Radare2 essentielles — mémorisation prioritaire
──────────────────────────────────────────────────────────
Navigation
s 0x401000 Seek address
s main Seek flag/symbol
ss 100 Seek +100 bytes
? Help contextuel
q Quit
Analysis
aa Analyze all (basic)
aaa Analyze all (auto-name functions, strings)
aaaa Very deep analysis (slow on large binaries)
af Analyze function at current seek
afl List all functions
Info
ii List imports
ie List entry points
iS List sections
iz List strings in data section
izz List strings in all sections
is List symbols
Print / Disassembly
pd 10 Print 10 disassembly lines
pdf Print function disassembly
pdg Print decompilation Ghidra (r2ghidra plugin)
pdd Print decompilation r2dec
px 64 Print hex 64 bytes
pv Print value at current seek
Visual Mode
V Enter visual mode
p Cycle view (hex/disasm/decomp)
V: Visual panels mode (multi-view)
h / j / k / l Vim-like navigation
q Exit visual
Flags / Markers
f myflag=0x401000 Create flag
fs * List all flag spaces
afn newname Rename function
Debug
doo Debug reopen in debug mode
db 0x401000 Breakpoint
dc Continue
ds Step into
dso Step over
drr Register references
Patching
wx 90 Write bytes hex (NOP = 0x90)
wa call main Write assembly
w "string" Write ASCII
Scripting
r2 -c "command" file Run command then quit
r2 -qc "aaa;izzj" file JSON output for strings3.3 Mode Visual
V entre en mode Visual, UI interactive terminal avec navigation vim-like :
Mode Visual — organisation
───────────────────────────
┌──────────────────────────────────────────┐
│ [hex][disasm][decomp][strings][functions]│ ← tabs via 'p' cycle
├──────────────────────────────────────────┤
│ │
│ Disassembly listing │
│ 0x401000 push rbp │
│ 0x401001 mov rbp, rsp │
│ 0x401004 sub rsp, 0x20 │
│ ... │
│ │
├──────────────────────────────────────────┤
│ Status : offset flags perm │
└──────────────────────────────────────────┘
Navigation :
j/k = up/down ligne
h/l = left/right byte
p/P = cycle views
V: = multi-panels mode
? = help contextuel
q = exitPour les workflows hybrides, Cutter (GUI Qt basée Rizin) offre une UX plus moderne avec les avantages de Radare2 scripting.
4. Scripting r2pipe
4.1 Concept
r2pipe est une librairie dans multiple langages qui lance Radare2 en subprocess et communique via stdin/stdout. Chaque commande Radare2 supporte un suffixe j qui retourne du JSON structuré, idéal pour parsing.
4.2 Exemple Python — extraction complète d'un binaire
# Script Python avec r2pipe — extraction structurée d'un binaire
# pip install r2pipe
import r2pipe
import json
from pathlib import Path
def analyze_binary(binary_path: str) -> dict:
"""Retourne dict structuré avec info binaire + fonctions + strings + imports."""
r2 = r2pipe.open(binary_path, flags=["-2"]) # -2 = silence stderr
# Auto-analyze (aaa = basic analysis, plus rapide que aaaa)
r2.cmd("aaa")
result = {
"file": str(Path(binary_path).resolve()),
"info": {},
"functions": [],
"strings": [],
"imports": [],
"sections": [],
"entry_points": [],
}
# Info binaire
result["info"] = json.loads(r2.cmd("ij"))["bin"]
# Entry points
result["entry_points"] = json.loads(r2.cmd("iej"))
# Fonctions
functions = json.loads(r2.cmd("aflj"))
result["functions"] = [
{
"name": f["name"],
"offset": f["offset"],
"size": f["size"],
"calls": f.get("callrefs", []),
}
for f in functions
]
# Strings
result["strings"] = json.loads(r2.cmd("izzj"))
# Imports
result["imports"] = json.loads(r2.cmd("iij"))
# Sections
result["sections"] = json.loads(r2.cmd("iSj"))
r2.quit()
return result
if __name__ == "__main__":
import sys
result = analyze_binary(sys.argv[1])
print(json.dumps(result, indent=2, default=str))4.3 Exemple batch — traitement massif
# Batch processing — analyse de tous samples dans un répertoire
import r2pipe
import json
import csv
from pathlib import Path
from concurrent.futures import ProcessPoolExecutor
def extract_iocs(binary_path: str) -> dict:
r2 = r2pipe.open(str(binary_path), flags=["-2"])
r2.cmd("aa")
iocs = {
"file": binary_path.name,
"sha256": r2.cmd("itj").strip(),
"urls": [],
"ips": [],
"registry_keys": [],
}
# Extract strings with regex matching
strings = json.loads(r2.cmd("izzj"))
import re
URL_RE = re.compile(r"https?://[^\s<>\"']+")
IP_RE = re.compile(r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b")
REG_RE = re.compile(r"HKEY_\w+\\[^\"]+", re.IGNORECASE)
for s in strings:
text = s.get("string", "")
iocs["urls"] += URL_RE.findall(text)
iocs["ips"] += IP_RE.findall(text)
iocs["registry_keys"] += REG_RE.findall(text)
r2.quit()
return iocs
def process_directory(sample_dir: Path, output_csv: Path):
samples = list(sample_dir.glob("*.exe")) + list(sample_dir.glob("*.dll"))
with ProcessPoolExecutor(max_workers=8) as executor:
results = list(executor.map(extract_iocs, samples))
# Export CSV
with open(output_csv, "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["file", "sha256", "urls", "ips", "registry_keys"])
writer.writeheader()
for r in results:
r["urls"] = ";".join(r["urls"])
r["ips"] = ";".join(r["ips"])
r["registry_keys"] = ";".join(r["registry_keys"])
writer.writerow(r)
print(f"Processed {len(results)} samples → {output_csv}")
if __name__ == "__main__":
process_directory(Path("/malware/samples"), Path("/malware/iocs.csv"))4.4 Langages r2pipe disponibles
| Langage | Package | Usage |
|---|---|---|
| Python | r2pipe (pip) | Standard scripting 2025 |
| Node.js / JavaScript | r2pipe (npm) | Integration web UIs |
| Go | r2pipe-go | Pipelines haute performance |
| Ruby | r2pipe (gem) | Legacy, moins actif |
| Rust | r2pipe | Émergent, sécurité mémoire |
| C | libr2pipe | Embedded binary tooling |
| Java | Community | Moins utilisé |
5. Décompilation : r2ghidra, r2dec, RzDec
5.1 r2ghidra — pseudo-C via Ghidra
r2ghidra (community plugin, GitHub radareorg/r2ghidra) wrap le décompilateur Ghidra dans Radare2. Install via r2pm :
# Installation r2ghidra (Radare2 Package Manager)
r2pm -U
r2pm -i r2ghidra
# Utilisation
r2 /bin/ls
[0x00004b50]> aaa
[0x00004b50]> s main
[0x00004c40]> pdg
// Ghidra decompiler output :
// void main(int argc, char **argv) { ... }Résultat : qualité Ghidra native dans workflow CLI Radare2. Combinaison puissante pour reverse power-users.
5.2 r2dec — décompilateur natif JavaScript
r2dec (r2pm -i r2dec) est le décompilateur écrit en JavaScript basé sur ESIL (Evaluable String Intermediate Language de Radare2). Plus léger, plus rapide, mais qualité inférieure à Ghidra sur obfuscation ou optimisations compilateur.
# Utilisation r2dec
[0x00004c40]> pdd
// Output pseudo-C r2dec style :
// int64_t main(int32_t argc, char **argv) {
// // ...
// }5.3 RzDec — natif Rizin
Successeur de r2dec pour Rizin, activement développé par la team Rizin. Intégré de plus en plus dans Cutter.
5.4 Matrice qualité décompilation
| Décompilateur | Qualité x86 | Qualité ARM | Vitesse | Intégration Radare2 |
|---|---|---|---|---|
| r2ghidra (wrap Ghidra) | Élevée (85-90 %) | Élevée | Moyenne | Commande pdg |
| r2dec | Moyenne (55-70 %) | Moyenne | Rapide | Commande pdd |
| RzDec | Émergent | Émergent | Rapide | Commande pdd Rizin |
| Ghidra standalone | Référence OSS | Élevée | Moyenne | N/A (Ghidra séparé) |
| Hex-Rays IDA Pro | Référence industrie | Élevée | Rapide | Via plugins payants séparés |
Pattern 2025 recommandé : installer r2ghidra + r2dec en complément dans Radare2 — choisir selon vitesse vs qualité par sample.
6. Cutter GUI
6.1 Qu'est-ce que Cutter
Cutter est une GUI Qt/C++ développée initialement en 2017 pour Radare2, migrée vers Rizin en 2021 comme backend par défaut. Elle offre :
- Disassembly view + Decompiler panel (via r2ghidra, RzDec).
- Graph view (CFG) interactive.
- Debugger UI.
- Python scripting console.
- Plugins architecture.
Positionnement : alternative moderne libre à IDA Pro avec backend OSS Rizin. Version 2.4.x en 2025.
6.2 Cutter vs Radare2 CLI
Cutter vs Radare2 CLI — quand choisir
──────────────────────────────────────
CUTTER GUI recommandé pour :
├─ Débutants reverse engineering
├─ Analyse manuelle exploratoire
├─ Workflow hybride CLI + GUI
├─ Formations et enseignement
└─ Users venant de IDA Pro / Ghidra
RADARE2 CLI PUR recommandé pour :
├─ Power users maîtrisant les commandes
├─ Automation scripting intensif
├─ Workflows SSH remote / VMs headless
├─ Pipeline CI/CD malware analysis
└─ Architectures exotiques sans support CutterCutter est installable via .AppImage (Linux), .dmg (macOS), .exe (Windows) depuis rizin.re/cutter/. Version open-source complète, pas de fonctionnalité payante.
7. Radare2 vs Ghidra vs IDA Pro vs Binary Ninja
7.1 Matrice comparative
| Critère | Radare2/Rizin | Ghidra | IDA Pro | Binary Ninja |
|---|---|---|---|---|
| Licence | LGPLv3 OSS | Apache 2.0 OSS | Commercial | Commercial |
| Prix | 0 € | 0 € | ~7000 $ + 1800 $/an | 500-2000 $ |
| GUI native | Cutter (optionnelle) | Code Browser Java | Qt IDA | Qt |
| CLI first | Oui (philosophie) | Non (headless mode) | idat (secondaire) | API secondaire |
| Scripting | r2pipe multi-lang | Jython, Ghidrathon, Java | IDAPython | Python, C++ |
| Décompilateur | Via r2ghidra/r2dec | Natif multi-arch | Hex-Rays (plugin payant) | Natif IL-based |
| Architectures | 40+ | 40+ SLEIGH | 100+ | ~30 |
| Debugger | Intégré CLI | 10+ intégré | Natif mature | API |
| Collaboration | Git-based | Ghidra Server | IDA Teams (payant) | Enterprise Server |
| Automation CLI / batch | Excellent | Bon (headless) | Correct (idat) | Correct (API) |
| Performance sur gros binaires | Excellent CLI | Moyen UI | Excellent | Excellent |
| Communauté FR | Forte (pancake, SSTIC) | Large mais moins FR | Large | Moyenne |
| Courbe apprentissage | Très raide | Modérée | Modérée | Modérée |
7.2 Recommandations par cas d'usage
| Cas d'usage | Outil préféré |
|---|---|
| Malware analysis standard | Ghidra |
| Malware analysis batch > 100 samples/jour | Radare2 CLI + r2pipe |
| Firmware IoT exotique | Radare2 + SLEIGH Ghidra si archi supportée |
| CTF binary simple | Ghidra ou Cutter |
| CTF binary rapide timer | Radare2 CLI (vitesse) |
| Enseignement / étudiants | Ghidra (UX plus accessible) |
| Enseignement power-users | Radare2 |
| Enterprise malware team | Ghidra + IDA Pro complémentaire |
| Forensic disk imaging | Radare2 (historique forensic) |
| Embedded / retro consoles | Radare2 (archs exotiques) |
8. Cas d'usage concrets 2025
8.1 Pipeline malware automation
Cas : entreprise de threat intel traite 500 samples/jour, besoin extraction IoCs + classification automatique.
#!/bin/bash
# pipeline_malware.sh
for sample in /malware/inbox/*.exe; do
# Analyse rapide Radare2 → JSON structuré
r2 -qc "aaa;ij;aflj;izzj;iij" "$sample" > /malware/output/$(basename "$sample").json
# YARA scan en parallèle
yara /yara/rules.yar "$sample" > /malware/output/$(basename "$sample").yara
# Hash + VirusTotal API si configuré
sha256=$(sha256sum "$sample" | cut -d' ' -f1)
curl -s -H "x-apikey: $VT_KEY" "https://www.virustotal.com/api/v3/files/$sha256" \
> /malware/output/$(basename "$sample").vt.json
mv "$sample" /malware/processed/
done
# Indexation résultats dans OpenCTI ou MISP
python3 /scripts/push_to_misp.py /malware/output/Radare2 shines ici grâce à sa vitesse CLI + JSON output natif.
8.2 Architectures exotiques
Exemple : reverse de firmware d'un périphérique industriel propriétaire, architecture custom 8-bit non supportée par Ghidra.
Radare2 permet d'écrire un plugin assembler/disassembler en Python via r2pipe ou C via l'API native, pour ajouter support architecture propriétaire en quelques jours-homme.
8.3 CTF binary fast solve
Lors d'un CTF time-constrained, Radare2 CLI permet des workflows ultra-rapides :
# CTF binary — solution en 2 minutes
r2 -A ./crackme
[0x00400540]> izz~flag # grep strings pour "flag"
0x00601080 16 flag{try_harder_lol}
[0x00400540]> afl # list functions
0x00400530 4 49 entry0
0x00400560 3 18 sym.imp.printf
0x00400580 1 40 sym.check_password
[0x00400540]> pdf @ sym.check_password
# Lecture assembly + détection pattern XOR simple
[0x00400540]> s 0x4005c0 # seek au XOR
[0x004005c0]> px 32 @ 0x601100 # hex dump target bytes8.4 Forensic disk imaging
Origine historique Radare2. Support natif pour :
- Disk images raw (
.img,.dd). - Partitions (GPT, MBR).
- Memory dumps (format brut).
- Filesystems via plugins (
fs_ext2,fs_ntfs).
Cas d'usage niche mais où Radare2 reste unique : analyste forensic qui veut naviguer un dump mémoire ou un disque corrompu avec un outil unifié.
8.5 Embedded / retro gaming
Radare2 supporte Game Boy Advance (ARM7), NES (6502), Atari (6502), Mega Drive (m68k), Saturn (SH-2). Communauté active autour du reverse consoles retro et bornes d'arcade historiques.
9. Limites et compléments
9.1 Quand ne pas utiliser Radare2
| Contexte | Alternative préférée |
|---|---|
| Débutant reverse engineering | Ghidra (UX plus accessible) |
| Mobile Android DEX | jadx (spécialisé Java) |
| Mobile iOS Objective-C/Swift | Ghidra + class-dump + Hopper |
| Binaires > 1 GB | IDA Pro (performance UI) |
| Formats firmware très exotiques | IDA Pro (loaders larges) |
| Workflow enterprise avec support commercial | IDA Pro ou Binary Ninja |
| Décompilation qualité maximale | Ghidra standalone ou IDA Pro Hex-Rays |
9.2 Compléments
Radare2 s'articule avec :
- Ghidra : pour décompilation qualité (via r2ghidra).
- Wireshark / mitmproxy : analyse réseau malware.
- Volatility : memory forensics.
- YARA : classification.
- Binwalk : extraction firmware amont de Radare2.
- GDB / LLDB : debugger alternatif si contexte le demande.
10. Courbe d'apprentissage et ressources 2025
10.1 Parcours débutant recommandé
Apprendre Radare2 en 4 semaines — parcours structuré
─────────────────────────────────────────────────────
Semaine 1 — Installation et commandes de base
├─ Installation (apt install radare2 ou build from source)
├─ r2 -A /bin/ls
├─ Mémoriser 15 commandes essentielles (a, aa, s, p, pd, V, q, ?)
└─ Tutoriel radareorg/radare2book chapitre 1-2
Semaine 2 — Workflows reverse classiques
├─ Analyse d'une dizaine de CrackMes.one 1-2 étoiles
├─ Visual mode (V) et multi-panels (V:)
├─ Flags et annotations (f, afn)
└─ Export résultats (> file, j suffix)
Semaine 3 — Scripting et décompilation
├─ Installation r2ghidra via r2pm
├─ r2pipe Python — premier script analyse
├─ Décompilation pdg et pdd
└─ Batch processing sur corpus
Semaine 4 — Niveau intermédiaire
├─ Cutter GUI installation et workflow hybride
├─ Debugger r2 pour dynamic analysis
├─ Plugin development (Python r2pipe class)
└─ CTF reverse participation avec stack Radare210.2 Ressources
- Livre officiel : radareorg.github.io/radare2book (gratuit, communautaire).
- Cheatsheet : radare.org/get/cutter-cheatsheet.pdf.
- Tutoriels vidéo : pancake conférences (SSTIC, DEF CON), Megabeets YouTube.
- Pratique : crackmes.one, HackTheBox reverse challenges, Flare-On CTF.
- Communauté : Discord r2con, Twitter/X @radare2org, @trufae (pancake).
- FR : SSTIC presentations pancake, Pass the SALT FR.
11. Points clés à retenir
- Radare2 (r2) = framework reverse CLI-first open-source LGPLv3 créé 2006 par pancake, ~20 000 stars GitHub fin 2024, référence 3e après IDA Pro et Ghidra.
- Rizin = fork décembre 2020 du codebase Radare2, modernisation gouvernance + API, compatibilité 90 % commandes, Cutter migré Rizin 2021.
- Philosophie CLI-first : workflow terminal, scripting roi via r2pipe (Python/Go/JS/Ruby/Rust/C), JSON output suffixe
j, automation native. - Décompilation via plugins : r2ghidra (wrap Ghidra, qualité élevée, commande
pdg), r2dec (JavaScript natif, rapide mais moins bon, commandepdd), RzDec (Rizin natif). - Cutter GUI : Qt/C++, basée Rizin depuis 2021, version 2.4.x en 2025 — alternative libre à IDA Pro avec UX moderne.
- 40+ architectures supportées via modular backend : x86, ARM, MIPS, PowerPC, RISC-V, 8051, Z80, GameBoy, m68k, SuperH, AVR, PIC, etc.
- Cas d'usage 2025 : pipeline malware batch 100-1000 samples/jour, architectures exotiques, forensic disk imaging, CTF rapide, embedded/retro consoles.
- Vs Ghidra : Ghidra plus accessible débutants + GUI native + décompilateur natif ; Radare2 plus rapide CLI + automation plus puissante + archs exotiques.
- Vs IDA Pro : Radare2 gratuit vs ~7000 $ IDA ; IDA Pro UI plus rapide gros binaires + loaders plus larges + écosystème plugins commerciaux plus mature.
- Courbe apprentissage raide (2-4 semaines pour productif, 3-6 mois maîtrise) mais rentabilisé pour automation + niche use cases.
- Communauté FR active via pancake, SSTIC, Pass the SALT, culture hacker forte.
Pour le comparatif Ghidra détaillé, voir Ghidra : à quoi ça sert. Pour la vue d'ensemble analyse binaire statique vs dynamique, Analyse statique vs dynamique. Pour apprendre le reverse engineering progressivement, Comment apprendre le reverse engineering. Pour le socle assembleur préalable, Pourquoi apprendre l'assembleur en cybersécurité. Pour les vulnérabilités binaires à rechercher, Qu'est-ce qu'un buffer overflow.







