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
ghidra-evm — Module Ghidra pour le désassemblage, la décompilation et l'analyse du bytecode des contrats intelligents Ethereum. Détecte les instructions non sécurisées, extrait les méthodes cachées et génère des graphes de flux de contrôle pour l'audit de sécurité. | Kitploit
Outils/GitHubGitHub/adelapie/ghidra-evm
Analyse StatiqueAnalyse des VulnérabilitésRétro-ingénierieAnalyse de Binaires
GitHubadelapie/ghidra-evm

ghidra-evm

Module Ghidra pour le désassemblage, la décompilation et l'analyse du bytecode des contrats intelligents Ethereum. Détecte les instructions non sécurisées, extrait les méthodes cachées et génère des graphes de flux de contrôle pour l'audit de sécurité.

Voir le dépôt
14929il 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

Ghidra EVM Module

front

Au cours des dernières années, les attaques contre les contrats intelligents déployés sur la blockchain Ethereum ont entraîné un vol important de fonds en raison d'erreurs de programmation. Comme les contrats intelligents, une fois compilés et déployés, sont complexes à modifier et à mettre à jour, différents praticiens ont suggéré l'importance de vérifier leur sécurité dans la blockchain où seul le bytecode de l'Ethereum Virtual Machine (EVM) est disponible. À cet égard, le rétro-ingénierie par désassemblage et décompilation peut être efficace.

ghidra-EVM est un module Ghidra pour le rétro-ingénierie des contrats intelligents. Il peut être utilisé pour télécharger le bytecode de l'Ethereum Virtual Machine (EVM) depuis la blockchain Ethereum, puis désassembler et décompiler le contrat intelligent. De plus, il peut analyser le code de création, trouver les méthodes du contrat et localiser les instructions non sécurisées.

Il comprend un module de processeur, un chargeur personnalisé et des plugins qui désassemblent le bytecode de l'EVM et génèrent un graphe de flux de contrôle (CFG) d'un contrat intelligent.

La dernière version utilise l'API Ghidra 9.1.2. Elle repose sur la bibliothèque crytic evm_cfg_builder (https://github.com/crytic/evm_cfg_builder) pour assister Ghidra dans le processus de génération du CFG.

Ghidra-evm se compose de :

  • Un chargeur qui lit le byte code et le code hexadécimal à partir des fichiers .evm et .evm_h respectivement (Voir exemples).
  • La définition SLEIGH du jeu d'instructions EVM en tenant compte des limitations du noyau Ghidra (Voir Remarques).
  • Un script d'aide qui utilise evm_cfg_builder et ghidra_bridge pour assister Ghidra dans la génération du CFG et l'exploration des propriétés des fonctions d'un contrat intelligent.
  • Une collection de scripts qui aident au rétro-ingénierie de différents aspects d'un contrat intelligent :

Instructions d'installation

  • Installer ghidra_bridge, en suivant les instructions sur https://github.com/justfoxing/ghidra_bridge
  • Installer la bibliothèque crytic evm_cfg_builder, en suivant les instructions sur https://github.com/crytic/evm_cfg_builder
  • Installer le dernier fichier de version ghidra-evm dans ghidra_evm/dist/ :
    • Ouvrir Ghidra
    • Fichier -> Installer les extensions
    • Cliquer sur '+' et sélectionner le fichier zip, par ex. ghidra_9.1.2_PUBLIC_20201102_ghidra_evm.zip
    • Cliquer sur OK
    • Redémarrer Ghidra

Instructions de compilation

Le contenu du répertoire ghidra-evm peut être utilisé pour créer un module Ghidra dans Eclipse avec un processeur et un chargeur afin d'étendre ou de déboguer ghidra_evm.

Tutoriels

middle

Intégration avec des outils d'exécution symbolique externes

ScriptDescription
teetherIl marque le chemin critique dans Ghidra avant de générer l'exploit. Nécessite teether.

Remarques

  • Le CFG est créé selon evm_cfg_builder : les instructions JUMP et JUMPI sont utilisées.
  • Une table de saut de 32x32 (evm_jump_table) est générée en conséquence pour détecter et afficher les branches dans les fenêtres de désassemblage et de flux de contrôle.
  • Ghidra n'a pas été conçu pour traiter des architectures et des mémoires de taille de mot > 64 bits. Cela signifie que des instructions telles que PUSH32 ne sont pas correctement affichées dans la fenêtre de décompilation.

Licence

Ghidra-evm est sous licence et distribué sous AGPLv3.

Remerciements

  • Ce travail a été soutenu par la Commission européenne dans le cadre du projet M-Sec du programme H2020 sous la subvention 814917.
  • Ghidra-EVM a été présenté dans la piste arsenal de Black Hat Asia 2021. Vous pouvez trouver les diapositives ici.
Télécharger l’outil
ScriptDescription
search_codecopy.pyLors de l'analyse du code de création dans un contrat intelligent, nous ne pouvons voir que la fonction _dispatcher qui utilise CODECOPY pour écrire le code d'exécution en mémoire. Ce script recherche les instructions CODECOPY utiles et trouve les méthodes du contrat intelligent cachées dans la partie runtime du contrat.
search_dangerous_instructions.pyDes instructions telles que CALL, CALLCODE, SELFDESTRUCT et DELEGATECALL peuvent parfois être abusées pour transférer des fonds vers un autre contrat. Ce script les trouve et crée une étiquette pour chaque occurrence.
load_external_contract.pyTélécharge le byte code d'un contrat intelligent depuis la blockchain dans un fichier .evm_h qui peut être chargé dans ghidra-evm
TutorielDescription
UtilisationInstructions simples d'utilisation avec test.evm
Analyse du bytecode de créationUtilisation de search_codecopy.py pour analyser le code de création et trouver les méthodes cachées
Recherche d'instructions dangereusesUtilisation de search_dangerous_instructions.py pour analyser une occurrence de SELFDESTRUCT
Téléchargement du bytecode d'un contrat intelligent depuis la blockchain dans GhidraUtilisation de load_external_contract.py pour télécharger le byte code EVM depuis la blockchain dans un fichier .evm_h