rizin

Framework open-source de rétro-ingénierie. Fork de radare2 avec une expérience utilisateur améliorée. Désassemble, débogue, analyse et édite des binaires. Inclut Cutter comme interface graphique. Open-source reverse engineering framework. Fork of radare2 with improved UX. Disassembles, debugs, analyzes, and edits binaries. Includes Cutter as a graphical frontend.

↗ https://rizin.re

Overview

rizin is a fork of radare2 with a focus on improved user experience, clean APIs, and consistent commands. It’s a full-featured reverse engineering framework: disassembler, debugger, binary editor, and scriptable analysis platform. Cutter is its official graphical frontend.

Basic Usage

Open a binary for analysis

rizin ./binary
rizin -A ./binary    # Analyze all (functions, strings, etc.)
rizin -a ./binary    # Analyze and run auto-analysis

Open in write mode

rizin -w ./binary

Open a file at specific offset

rizin -s 0x401000 ./binary

Debug mode

rizin -d ./binary

Core Commands

[0x00401000]> aaa    # analyze all
[0x00401000]> aa     # analyze and detect functions
[0x00401000]> s main          # seek to main function
[0x00401000]> s 0x401234      # seek to address
[0x00401000]> pdf             # print disassembly of function
[0x00401000]> pd 20           # print 20 disassembled instructions
[0x00401000]> px 64           # print 64 bytes hexdump
[0x00401000]> iz       # list strings in data section
[0x00401000]> izz      # list all strings in binary
[0x00401000]> / "/bin/sh"  # search for string
[0x00401000]> afl      # list all functions
[0x00401000]> afn main 0x401234  # rename function
[0x00401000]> i        # binary info
[0x00401000]> ii       # imports
[0x00401000]> iS       # sections
[0x00401000]> is       # symbols

Debugging

Start debugging

rizin -d ./binary
[0x00401000]> dc      # continue execution
[0x00401000]> dso     # step over
[0x00401000]> dsi     # step into
[0x00401000]> db 0x401234  # set breakpoint
[0x00401000]> dbl     # list breakpoints
[0x00401000]> dr      # print registers
[0x00401000]> dr rsp  # print specific register

ROP Gadgets

Find ROP gadgets

[0x00401000]> /R pop rdi

Find all ret gadgets

[0x00401000]> /R ret

Search for gadget patterns

[0x00401000]> /R pop r??; ret

Scripting

Rizin scripting

rizin -q ./binary -c "aaa; afl"

With rizin pipe

rz-pipe ./binary "aaa" "afl"
# Python scripting with rzpipe
python3 -c "
import rzpipe
r = rzpipe.open('./binary')
r.cmd('aaa')
functions = r.cmdj('aflj')
for f in functions:
    print(f['name'], hex(f['offset']))
"

Cutter (Graphical Frontend)

Install Cutter

sudo apt install rizin-cutter

Launch Cutter

cutter
# Cutter features:
# - Graph view for control flow
# - Decompiler (with rz-ghidra plugin)
# - Hex editor
# - Strings, imports, exports panels
# - Scripting console

Tips

  • Use aaa for full analysis, aa for faster basic analysis
  • pdf (print disassembly of function) is the most used command after seeking
  • The Cutter GUI is recommended for initial binary exploration before deep diving in CLI
  • Use rz-ghidra plugin for decompilation directly in rizin/Cutter
Quick Command Reference
s <addr>    Seek to address
pd N        Print N disassembled instructions
pdf         Print disassembly of current function
afl         List all analyzed functions
iz          List strings in data section
ii          List imports
iS          List sections
dr          Print registers
db <addr>   Set breakpoint
dc          Continue execution
/R <instr>  Search for ROP gadget
px N        Hexdump N bytes
i           Binary information

Vue d’ensemble

rizin est un fork de radare2 axé sur une expérience utilisateur améliorée, des API propres et des commandes cohérentes. C’est un framework de rétro-ingénierie complet : désassembleur, débogueur, éditeur binaire et plateforme d’analyse scriptable. Cutter est son interface graphique officielle.

Utilisation basique

Ouvrir un binaire pour analyse

rizin ./binary
rizin -A ./binary    # Analyser tout (fonctions, chaînes, etc.)
rizin -a ./binary    # Analyser et lancer l'auto-analyse

Ouvrir en mode écriture

rizin -w ./binary

Ouvrir un fichier à un offset spécifique

rizin -s 0x401000 ./binary

Mode débogage

rizin -d ./binary

Commandes de base

[0x00401000]> aaa    # analyser tout
[0x00401000]> aa     # analyser et détecter les fonctions
[0x00401000]> s main          # se positionner sur la fonction main
[0x00401000]> s 0x401234      # se positionner sur une adresse
[0x00401000]> pdf             # afficher le désassemblage de la fonction
[0x00401000]> pd 20           # afficher 20 instructions désassemblées
[0x00401000]> px 64           # afficher un hexdump de 64 octets
[0x00401000]> iz       # lister les chaînes dans la section de données
[0x00401000]> izz      # lister toutes les chaînes du binaire
[0x00401000]> / "/bin/sh"  # rechercher une chaîne
[0x00401000]> afl      # lister toutes les fonctions
[0x00401000]> afn main 0x401234  # renommer une fonction
[0x00401000]> i        # informations sur le binaire
[0x00401000]> ii       # imports
[0x00401000]> iS       # sections
[0x00401000]> is       # symboles

Débogage

Démarrer le débogage

rizin -d ./binary
[0x00401000]> dc      # poursuivre l'exécution
[0x00401000]> dso     # step over
[0x00401000]> dsi     # step into
[0x00401000]> db 0x401234  # placer un point d'arrêt
[0x00401000]> dbl     # lister les points d'arrêt
[0x00401000]> dr      # afficher les registres
[0x00401000]> dr rsp  # afficher un registre spécifique

Gadgets ROP

Trouver des gadgets ROP

[0x00401000]> /R pop rdi

Trouver tous les gadgets ret

[0x00401000]> /R ret

Rechercher des schémas de gadgets

[0x00401000]> /R pop r??; ret

Scripting

Scripting rizin

rizin -q ./binary -c "aaa; afl"

Avec rizin pipe

rz-pipe ./binary "aaa" "afl"
# Scripting Python avec rzpipe
python3 -c "
import rzpipe
r = rzpipe.open('./binary')
r.cmd('aaa')
functions = r.cmdj('aflj')
for f in functions:
    print(f['name'], hex(f['offset']))
"

Cutter (interface graphique)

Installer Cutter

sudo apt install rizin-cutter

Lancer Cutter

cutter
# Fonctionnalités de Cutter :
# - Vue graphe pour le flux de contrôle
# - Décompilateur (avec le plugin rz-ghidra)
# - Éditeur hexadécimal
# - Panneaux chaînes, imports, exports
# - Console de scripting

Conseils

  • Utiliser aaa pour une analyse complète, aa pour une analyse basique plus rapide
  • pdf (afficher le désassemblage de la fonction) est la commande la plus utilisée après un déplacement
  • L’interface Cutter est recommandée pour l’exploration initiale d’un binaire avant de plonger en CLI
  • Utiliser le plugin rz-ghidra pour la décompilation directement dans rizin/Cutter
Référence rapide des commandes
s <addr>    Seek to address
pd N        Print N disassembled instructions
pdf         Print disassembly of current function
afl         List all analyzed functions
iz          List strings in data section
ii          List imports
iS          List sections
dr          Print registers
db <addr>   Set breakpoint
dc          Continue execution
/R <instr>  Search for ROP gadget
px N        Hexdump N bytes
i           Binary information