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
ScratchABit — Désassembleur interactif facilement re-ciblable et modifiable, avec une API de plugins compatible IDAPython. | Kitploit
Outils/GitHubGitHub/pfalcon/scratchabit
Analyse StatiqueRétro-ingénierieDébogueursAnalyse de Binaires
GitHubpfalcon/scratchabit

ScratchABit

Désassembleur interactif facilement re-ciblable et modifiable, avec une API de plugins compatible IDAPython.

Voir le dépôt
41348il y a 5 ansVé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

ScratchABit

ScratchABit est un désassembleur incrémental interactif avec des capacités d'analyse de flux de données et de contrôle. ScratchABit est dédié aux efforts de la communauté de rétro-ingénierie OpenSource (rétro-ingénierie pour produire des pilotes/firmware OpenSource pour du matériel mal supporté par les fournisseurs, pour l'interopérabilité matérielle et logicielle, pour la recherche en sécurité).

ScratchABit prend en charge l'API IDAPython bien connue dans la communauté pour écrire des modules de désassemblage/d'extension.

ScratchABit est un travail en cours, des fonctionnalités sont ajoutées au besoin, les contributions sont les bienvenues.

ScratchABit est publié sous les termes de la GNU General Public License v3 (GPLv3).

Exigences/manifeste

  1. Ne doit pas être écrit dans un langage obscurci. Cela inclut les langages qui sont trop bas niveau, qui permettent d'accéder à des variables non initialisées, qui ne différencient pas les variables des fonctions/procédures, qui commencent les indices de tableau à partir de nombres arbitraires, etc., etc. ScratchABit est écrit en Python (version moderne, Python3) pour votre plaisir et votre santé mentale.

  2. Le framework d'interface utilisateur doit permettre une interaction utilisateur du niveau requis, sans ajouter de dépendances, de bloat, de problèmes et d'incompatibilités entre les versions du framework. ScratchABit utilise actuellement une interface utilisateur texte plein écran simple, utilisant les séquences d'échappement de terminal ANSI/VT100 (oui, même la bibliothèque curses a été jugée trop lourde comme dépendance à imposer aux utilisateurs).

  3. Devrait tirer parti de formats texte faciles à utiliser pour stocker la « base de données », afin de faciliter la réutilisation et l'écriture d'outils, et le stockage dans des systèmes de contrôle de version.

Installation

Pour utiliser ScratchABit, vous avez besoin de Python3 installé (testé avec Python 3.3 à 3.7) et d'un terminal ou émulateur de terminal VT100 (minimum) ou XTerm (recommandé) (tout système Unix devrait être compatible, comme Linux/BSD/etc., voir FAQ ci-dessous pour plus).

Clonez le code en utilisant :

root@kitploit:~
git clone --recursive https://github.com/pfalcon/ScratchABit

Si vous avez cloné le code sans --recursive, exécutez git submodule update --init dans le répertoire ScratchABit.

ScratchABit est désormais livré avec un ou des plugins CPU basés sur Capstone Engine, qui permettent d'accéder à un certain nombre d'architectures CPU. Pour l'utiliser, le module de liaisons Python récent pour Capstone doit être installé (de préférence aux paquets fournis par les distributions OS, souvent obsolètes). Le moyen le plus simple de l'installer est dans le répertoire des paquets utilisateur Python :

root@kitploit:~
pip3 install --no-cache-dir --user capstone

Une alternative est de l'installer dans un environnement virtuel Python dans le répertoire ScratchABit :

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip3 install --no-cache-dir capstone

Chaque fois que vous ouvrez une nouvelle session de terminal pour travailler avec ScratchABit, exécutez à nouveau la commande source .venv/bin/activate pour activer l'environnement virtuel.

Si rien de ce qui précède ne fonctionne, vous pouvez essayer d'installer le paquet capstone à l'échelle du système (déconseillé) :

root@kitploit:~
sudo pip3 install --system capstone

Démarrage rapide

Si vous souhaitez désassembler un fichier dans un format exécutable auto-descriptif (comme ELF), passez-le simplement comme argument à ScratchABit.py. Le dépôt inclut un certain nombre de fichiers example-*.elf pour diverses architectures pour un démarrage rapide. Par exemple, pour essayer la version x86 32 bits :

root@kitploit:~
python3 ScratchABit.py example-x86_32.elf

Alternativement, si vous souhaitez désassembler un fichier binaire brut, vous devez créer un fichier .def (définition), pour spécifier les zones mémoire définies pour le code, à quelle adresse charger le fichier binaire, etc. (Remarque : un fichier .def peut être utile pour les fichiers .elf et similaires aussi.) Le dépôt inclut un code binaire brut simple x86_64, et le fichier example-x86_64.def correspondant (regardez à l'intérieur pour la description des options disponibles) :

root@kitploit:~
python3 ScratchABit.py example-x86_64.def

Appuyez sur F9 pour accéder aux menus (la souris fonctionne aussi dans les terminaux compatibles XTerm). Appuyez sur F1 pour obtenir de l'aide sur les raccourcis clavier (la plupart des actions sont également accessibles via le menu). Le flux de travail de ScratchABit est similaire à d'autres désassembleurs interactifs (une expérience préalable ou une lecture de fond peut être utile).

Utilisation des plugins

Les plugins de processeur IDAPython peuvent être chargés depuis n'importe quel endroit du chemin des modules Python. Alternativement, vous pouvez créer un lien symbolique/copier le(s) fichier(s) .py du plugin dans le sous-répertoire plugins/cpu/.

Une fois le plugin rendu disponible, créez un nouveau fichier de définition basé sur example-x86_64.def qui définit le nom du module plugin (sans l'extension .py) dans la ligne cpu xxx.

Pour un exemple très simple utilisant un plugin externe, voir ce fichier esp8266.def qui fonctionne avec le plugin xtensa.py du dépôt ida-xtensa2.

TODO/Choses à décider

  • Utilise actuellement plusieurs fichiers pour la « base de données », chacun stockant un type particulier d'informations. Passer à un seul fichier YAML à la place ?
  • Ajouter de la couleur (priorité basse, correctifs (non gonflés !) bienvenus).
  • Encore quelques commandes UI importantes à implémenter pour un travail confortable. (Toutes les commandes les plus importantes devraient être présentes, les autres fonctionnalités sont censées être implémentées via des plugins).
  • Proposer de sauvegarder la BD à la sortie si modifiée.
  • Intégration Git pour la sauvegarde de la BD.
  • Améliorer la robustesse (ajouter un gestionnaire d'exceptions au niveau de la boucle principale, ne pas abandonner l'application, afficher à l'utilisateur/dans le journal et continuer).
  • Essayer de gérer les incohérences de flux de code (par exemple, au sein d'une instruction - priorité basse pour l'usage prévu) et les incohérences d'accès aux données (par exemple, accès à des octets individuels d'un mot précédemment détecté - priorité plus élevée). (Amélioré dans 1.4.)
  • Voir comment prendre en charge d'autres types de plugins IDAPython en plus des modules de processeur.
  • Analyser et utiliser les informations de débogage (par exemple DWARF) présentes dans les fichiers ELF (etc.).

FAQ

Q : Quels processeurs/architectures sont pris en charge ?

R : ScratchABit ne prend en charge aucune architecture de processeur par lui-même, il est entièrement reciblable à l'aide de plugins API IDAPython. De nombreux plugins sont disponibles, écrire un nouveau plugin est facile. Pour permettre aux utilisateurs d'essayer ScratchABit, un simple plugin de processeur x86 est inclus dans la distribution, utilisant le désassembleur Pymsasid sous le capot.

À partir de la version 2.0, un plugin Capstone est également inclus, permettant d'accéder à un certain nombre d'architectures, notamment x86, ARM, MIPS, PowerPC, SPARC, etc. (le support d'architecture est activé progressivement en fonction des tests utilisateurs).

Vous pouvez en savoir plus sur les plugins fournis avec ScratchABit dans le README du répertoire plugins/cpu/.

Q : Débogueur ?

R : ScratchABit est dédié à l'analyse statique et au support facile des nouvelles architectures CPU (il suffit de coder un nouveau plugin CPU en Python - vous pouvez obtenir des résultats initiaux en quelques heures). L'analyse dynamique n'a pas été conçue comme une fonctionnalité principale et il n'y a pas de plans immédiats pour l'implémenter. Les correctifs sont cependant les bienvenus.

Q : Décompilateur ?

R : Il existe un projet connexe, appelé ScratchABlock pour l'analyse approfondie de programmes, la transformation et la décompilation. On s'attend à ce qu'à mesure que ScratchABlock mûrit, certaines de ses fonctionnalités soient disponibles dans ScratchABit (peut-être via des plugins).

Q : Je ne suis pas sur Linux, comment puis-je exécuter ScratchABit ?

R : Installez Linux dans un émulateur/VM sur votre système et réjouissez-vous.

Q : Capture d'écran obligatoire ?

R : Bien sûr :

screenshot

Télécharger l’outil