Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
quokka — Exporte le désassemblage d'IDA Pro, Ghidra et Binary Ninja vers des fichiers protobuf compacts pour une analyse binaire rapide et autonome et la manipulation de programmes via les bindings Python. | Kitploit
Outils/GitHubGitHub/quarkslab/quokka
Analyse StatiqueAnalyse de CodeRétro-ingénierieUtilitaires et FrameworksAnalyse de Binaires
GitHubquarkslab/quokka

quokka

Exporte le désassemblage d'IDA Pro, Ghidra et Binary Ninja vers des fichiers protobuf compacts pour une analyse binaire rapide et autonome et la manipulation de programmes via les bindings Python.

Voir le dépôt
22322il y a 16 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

Quokka

image générée par DALL-E


Table des matières

  • Introduction
  • Installation
  • Utilisation
  • Compilation
  • Documentation
  • FAQ

Introduction

Quokka est un exportateur de binaires : à partir du désassemblage d'un programme, il génère un fichier d'export qui peut être utilisé sans le désassembleur. Il prend actuellement en charge IDA Pro, Ghidra et Binary Ninja comme moteurs de désassemblage.

L'objectif principal de Quokka est de permettre de manipuler entièrement le binaire sans jamais ouvrir de désassembleur après l'export initial. De plus, il fait abstraction de l'API du désassembleur pour exposer une interface propre aux utilisateurs.

Quokka s'inspire fortement de BinExport, l'exportateur de binaires utilisé par BinDiff.

Architecture

root@kitploit:~
     IDA Pro               Ghidra               Binary Ninja
        │                      │                      │
IDA Plugin (C++)    Ghidra Plugin (Java)   BinaryNinja Plugin (Python)
        │                      │                      │
        └────────────── quokka.proto ─────────────────┘
                     (protobuf schema)
                              │
                        .quokka files
                              │
              Python bindings (quokka.Program)
              ├── Capstone backend (primary)
              └── Pypcode backend (optional)

Installation

Plugin Python

Le plugin est compilé dans le CI et disponible dans le registre.

Il devrait être possible de l'installer directement via PIP avec une commande de ce type :

root@kitploit:~
$ pip install quokka-project

Plugin IDA

Note : le plugin IDA n'est pas nécessaire pour lire un fichier généré par Quokka. Il sert uniquement à les générer.

Quokka est compatible avec IDA 9.1+.

Via le gestionnaire de plugins IDA (IDA 9.2+)

Quokka est publié dans le dépôt de plugins Hex-Rays et peut être installé avec hcli :

root@kitploit:~
user@host:~$ hcli plugin install quokka

Manuellement

Le plugin est également compilé dans le CI et disponible dans l'onglet Releases.

Pour télécharger le plugin, récupérez le fichier nommé quokka_plugin.so (ou l'archive quokka-ida<version>.zip pour votre version d'IDA) et copiez-le dans votre répertoire plugins d'IDA.

Extension Ghidra

Quokka prend également en charge l'export depuis Ghidra (>= 12.0.3) via une extension dédiée. Il produit les mêmes fichiers protobuf .quokka que la bibliothèque Python peut charger.

Pour les instructions de compilation, d'installation et les détails d'utilisation, consultez le README de l'extension Ghidra.

Extension BinaryNinja

Quokka prend également en charge l'export depuis Binary Ninja via un plugin Python. Il produit les mêmes fichiers protobuf .quokka que la bibliothèque Python peut charger.

Pour les détails d'installation et d'utilisation, consultez le README de l'extension BinaryNinja.

Utilisation

Export via l'interface graphique

La première méthode manuelle pour exporter un binaire consiste à utiliser le plugin dans IDA Pro. Le raccourci par défaut dans IDA est Alt+A. Il ouvre la boîte de dialogue suivante :

Boîte de dialogue d'export

Les modes disponibles sont :

  • LIGHT : exporte uniquement les données au niveau des blocs (les instructions sont décodées à l'exécution par Capstone à partir des octets du binaire d'origine)
  • FULL : exporte les instructions et les opérandes (mode autonome, ne nécessite pas le binaire d'origine pour le désassemblage)

Note : le mode FULL n'est pas encore implémenté. Seul le mode LIGHT est actuellement fonctionnel.

Export en mode headless

IDA

Note : cela nécessite une installation IDA fonctionnelle.

root@kitploit:~
$ idat -OQuokkaAuto:true -OQuokkaDecompiled:true -A /path/to/hello.i64

Toutes les options disponibles sont décrites dans la page Utilisation.

Note : idat est utilisé à la place de ida pour accélérer l'export, car l'interface graphique n'est pas nécessaire.

Ghidra

root@kitploit:~
$ analyzeHeadless /tmp/proj Test \
    -import /path/to/binary \
    -scriptPath ghidra_extension/src/script/ghidra_scripts \
    -postScript QuokkaExportHeadless.java \
    --out=/path/to/output.quokka --mode=LIGHT

Voir le README de l'extension Ghidra pour plus de détails.

Binary Ninja

Note : l'utilisation en mode headless de l'API Binary Ninja nécessite une licence commerciale. Sans licence, utilisez plutôt la commande d'export dans l'interface de Binary Ninja.

root@kitploit:~
$ python binaryninja_extension/export_headless.py /path/to/binary \
    -o /path/to/output.quokka --mode LIGHT

Voir le README de l'extension BinaryNinja pour plus de détails.

Export en CLI

Quokka fournit un utilitaire en ligne de commande pour exporter automatiquement un ou plusieurs fichiers et/ou répertoires (tous les fichiers exécutables de chaque répertoire) en parallèle. Il prend en charge les moteurs IDA Pro et Ghidra :

root@kitploit:~
$ quokka-cli --backend ghidra -t 8 dir/
$ quokka-cli --backend ida --ida-path /opt/ida -t 8 dir/
$ quokka-cli -t 8 dir/                          # auto-detect backend
$ quokka-cli -o "%p/exports/%f.quokka" binary   # custom output directory
$ quokka-cli -b ida -o %F_ida.quokka -t 4 dir/  # Using relative path
$ quokka-cli -t 8 dir1/ dir2/ binary1 binary2   # multiple inputs

Par défaut, le fichier .quokka est placé à côté du binaire d'entrée (par ex. /usr/bin/ls produit /usr/bin/ls.quokka). Utilisez -o pour remplacer ce comportement par un chemin littéral ou un modèle développé pour chaque fichier (%f = nom sans extension, %F = nom de fichier, %p = répertoire parent, %P = chemin complet, %e = extension, %% = % littéral).

Exécutez quokka-cli --help pour voir toutes les options. Les principaux paramètres sont :

  • -b, --backend : pour choisir le moteur de désassemblage (ida, ghidra ou auto)
  • -i, --ida-path : pour fournir le chemin du répertoire d'installation d'IDA (le dossier contenant idat)
  • --ghidra-path : pour fournir le répertoire d'installation de Ghidra (remplace GHIDRA_INSTALL_DIR)
  • -o, --output : pour définir le chemin ou le modèle de sortie (défaut : %F.quokka)
  • -m, --mode : pour choisir le mode d'export ( ou )

Chargement d'un fichier d'export

root@kitploit:~
import quokka
from quokka.types import Disassembler

# Directly from the binary (auto-detects available backend)
prog = quokka.Program.from_binary("/bin/ls")

# Explicitly choose a backend
prog = quokka.Program.from_binary("/bin/ls", disassembler=Disassembler.GHIDRA)
prog = quokka.Program.from_binary("/bin/ls", disassembler=Disassembler.IDA)

# From the exported file
prog = quokka.Program("ls.quokka",  # the exported file
                      "/bin/ls")    # the original binary

Modification et ajout de types

root@kitploit:~
# Add new types from C declarations
prog.add_type("struct context { int id; char name[64]; };")
prog.add_type("enum status { OK=0, ERROR=1 };")

# Save the .quokka file
prog.write()

# Or apply changes (including new types) back to the IDA database
prog.commit(database_file="ls.i64", overwrite=True)

Consultez la documentation complète sur la modification pour plus de détails sur le renommage des fonctions, la définition des prototypes, etc.

Compilation

Le processus de compilation dépend de la version du SDK IDA que vous utilisez. Ces deux modes sont également appelés le nouveau mode et l'ancien mode.

IDA >= 9.2 (La nouvelle méthode)

Le SDK IDA a finalement été publié en open source, il n'est donc plus nécessaire de le télécharger séparément.

Vous pouvez utiliser l'option cmake -DIDA_VERSION=<major>.<minor> pour le synchroniser automatiquement depuis GitHub.

root@kitploit:~
user@host:~/quokka$ cmake -B build \ # Where to build
                          -S . \ # Where are the sources
                          -DIDA_VERSION=9.2 \ # IDA SDK version
                          -DCMAKE_BUILD_TYPE:STRING=Release \ # Build Type

user@host:~/quokka$ cmake --build build -- -j

IDA < 9.2 (L'ancienne méthode)

Étant donné que le SDK IDA est encore un code propriétaire, vous devez le récupérer vous-même et fournir son chemin à cmake via l'option -DIdaSdk_ROOT_DIR:STRING=path/to/sdk

REMARQUE : cela fonctionnera également avec les versions plus récentes, mais cela demande plus d'étapes aux utilisateurs, qui devront télécharger le SDK eux-mêmes.

root@kitploit:~
user@host:~/quokka$ cmake -B build \ # Where to build
                          -S . \ # Where are the sources
                          -DIdaSdk_ROOT_DIR:STRING=path/to/ida_sdk \ # Path to IDA SDK 
                          -DCMAKE_BUILD_TYPE:STRING=Release \ # Build Type

user@host:~/quokka$ cmake --build build --target quokka_plugin -- -j

Installation

Pour installer le plugin :

root@kitploit:~
user@host:~/quokka$ cmake --install build

Dans tous les cas, le plugin se trouvera également dans build/quokka-install. Vous pouvez le copier dans le répertoire des plugins utilisateur d'IDA.

root@kitploit:~
user@host:~/quokka$ cp build/quokka-install/quokka_plugin.so $HOME/.idapro/plugins/

Pour des informations plus détaillées sur la compilation, consultez Compilation

Documentation

La documentation est disponible en ligne à l'adresse documentation

FAQ

Vous pouvez consulter une liste de questions ici : FAQ

Modes d'export

Note : seul le mode LIGHT est actuellement implémenté. Le mode FULL (autonome) est prévu mais pas encore fonctionnel.

Quokka propose deux modes pour exporter l'analyse du désassemblage : le mode léger et le mode autonome.

Le mode léger se concentre sur l'export d'informations essentielles uniquement, produisant des fichiers rapides et légers. Dans ce mode, aucune information au niveau des instructions ou en dessous n'est exportée ; le moteur capstone est donc utilisé à l'exécution pour obtenir le désassemblage des instructions.

Le mode autonome, quant à lui, exporte le désassemblage complet, exactement comme le désassembleur backend l'affiche. Cela produit des fichiers plus lourds, mais ne nécessite pas de dépendre de désassembleurs tiers à l'exécution.

Il est important de noter que les deux modes offrent la même API dans les bindings Python.

[!WARNING] Depuis le mode autonome, il est toujours possible d'obtenir l'objet d'instruction capstone, mais attention : le désassemblage capstone peut différer de celui exporté par quokka (les instructions peuvent être divisées, fusionnées, non prises en charge, avoir des mnémoniques différentes, etc.). En général, différentes plateformes d'analyse binaire produisent des désassemblages différents ; gardez cela à l'esprit lorsque vous mélangez capstone avec le mode autonome.

Pour un aperçu complet des différences entre les deux modes, consultez le tableau ci-dessous :

¹ Activé en option

² Actuellement non pris en charge

Télécharger l’outil
light
full
  • --decompiled : pour activer l'export du code décompilé (IDA uniquement)
  • -v, --verbose : pour activer les journaux détaillés
  • Mode légerMode autonome
    Fonctions✅✅
    Blocs de base✅✅
    Instructions❌✅
    Opérandes❌✅
    Références de données✅✅
    Références croisées✅✅
    Sections/Disposition✅✅
    Décompilation✅¹✅¹
    Coordonnées de tracé du CFG✅¹²✅¹²