
L'extension open-source de l'équipe FLARE pour ajouter la prise en charge de scripts Python 3 à Ghidra.
Ghidrathon est une extension Ghidra qui ajoute des capacités de script Python 3 à Ghidra. Pourquoi ? Ghidra prend en charge nativement les scripts en Java et en Jython. Malheureusement, de nombreux outils d'analyse open-source, comme capa, Unicorn Engine, angr, etc., sont écrits en Python 3, ce qui rend difficile, et dans certains cas impossible, l'utilisation de ces outils dans Ghidra. De plus, la communauté de la sécurité a publié plusieurs excellents plugins pour d'autres frameworks de rétro-ingénierie logicielle comme IDA Pro et Binary Ninja, mais là encore, parce que beaucoup de ces plugins utilisent Python 3, il est difficile de les porter vers Ghidra. Ghidrathon vous aide à utiliser des outils Python 3 existants et à en développer de nouveaux dans Ghidra, ainsi qu'à scripter Ghidra avec du Python moderne d'une manière qui s'intègre étroitement à l'interface utilisateur de Ghidra. Il remplace l'extension Python 2.7 existante implémentée via Jython. Cela inclut la fenêtre d'interpréteur interactive, l'intégration avec le Ghidra Script Manager et l'exécution de scripts en mode headless de Ghidra.

Veuillez consulter notre exemple de script Ghidra Python 3 ici pour un aperçu plus détaillé de l'écriture de scripts Python 3 pour Ghidra.
À découvrir :
| Outil | Version | Source |
|---|---|---|
| Ghidrathon | >= 4.0.0 | https://github.com/mandiant/Ghidrathon/releases |
| Python | >= 3.8.0 | https://www.python.org/downloads |
| Jep | == 4.2.0 | https://pypi.org/project/jep |
| Ghidra | >= 10.3.2 | https://github.com/NationalSecurityAgency/ghidra/releases |
| Java | >= 17.0.0 | https://adoptium.net/temurin/releases |
Suivez les étapes suivantes pour installer Ghidrathon dans votre environnement Ghidra :
$ python -m pip install -r requirements.txt
$ python ghidrathon_configure.py <absolute_path_to_ghidra_install_dir>
Remarque : ghidrathon_configure.py tente par défaut d'écrire un fichier nommé ghidrathon.save dans <absolute_path_to_ghidra_install_dir>. Vous pouvez spécifier le chemin où ce fichier est écrit en définissant la variable d'environnement GHIDRATHON_SAVE_PATH avant d'exécuter ghidrathon_configure.py et Ghidra :
$ export GHIDRATHON_SAVE_PATH="/path/to/custom/dir" # Linux/MacOS
$ set GHIDRATHON_SAVE_PATH="C:\path\to\custom\dir" # Windows
Remarque : il se peut que vous soyez invité à définir une variable d'environnement nommée JAVA_HOME. Celle-ci doit référencer le chemin absolu du JDK que vous avez configuré pour votre installation Ghidra.
.zip) dans Ghidra :
File > Install Extensions...+.zip)OkInstall Anyway si la fenêtre Extension Version Mismatch vous y invite.zip) vers <absolute_path_to_ghidra_install_dir>\Ghidra\ExtensionsVous pouvez faire passer Ghidrathon à un autre interpréteur Python en exécutant l'étape 2 avec le nouvel interpréteur Python.
Vous pouvez utiliser un environnement virtuel Python avec Ghidrathon en exécutant l'étape 2 depuis l'environnement virtuel. Pour passer à un autre environnement virtuel, exécutez simplement l'étape 2 depuis le nouvel environnement virtuel.
La fenêtre de l'interpréteur fournit un accès interactif à votre interpréteur Python 3. Cliquez sur "Window" et sélectionnez "Ghidrathon" pour ouvrir la fenêtre de l'interpréteur.

Ghidrathon s'intègre directement au Ghidra Script Manager, vous permettant de créer, modifier et exécuter des scripts Python 3 dans Ghidra. Cliquez sur "Create New Script" et sélectionnez "Python 3" pour créer un nouveau script Python 3. Cliquez sur "Run Script" ou "Run Editor's Script" pour exécuter votre script Python 3 et consultez la fenêtre Ghidra Console pour la sortie du script.

Ghidrathon vous aide à exécuter des scripts Python 3 en mode headless de Ghidra. Exécutez le script analyzeHeadless situé dans votre dossier d'installation Ghidra, spécifiez votre script Python 3 et consultez la fenêtre de console pour la sortie du script.
$ analyzeHeadless C:\Users\wampus example -process example.o -postScript ghidrathon_example.py
[...]
INFO SCRIPT: C:\Users\wampus\.ghidra\.ghidra_10.0.3_PUBLIC\Extensions\Ghidrathon-master\ghidra_scripts\ghidrathon_example.py (HeadlessAnalyzer)
Function _init @ 0x101000: 3 blocks, 8 instructions
Function FUN_00101020 @ 0x101020: 1 blocks, 2 instructions
Function __cxa_finalize @ 0x101040: 1 blocks, 2 instructions
Function printf @ 0x101050: 1 blocks, 2 instructions
Function _start @ 0x101060: 1 blocks, 13 instructions
Function deregister_tm_clones @ 0x101090: 4 blocks, 9 instructions
Function register_tm_clones @ 0x1010c0: 4 blocks, 14 instructions
Function __do_global_dtors_aux @ 0x101100: 5 blocks, 14 instructions
[...]
INFO REPORT: Post-analysis succeeded for file: /example.o (HeadlessAnalyzer)
INFO REPORT: Save succeeded for processed file: /example.o (HeadlessAnalyzer)
Pour plus d'informations sur l'exécution de Ghidra en mode headless, consultez <absolute_path_to_ghidra_install_dir>/support/analyzeHeadlessREADME.html.
L'une de nos principales motivations pour développer Ghidrathon était de permettre l'utilisation de modules Python 3 tiers dans Ghidra. Vous pouvez installer un module et commencer à l'utiliser dans Ghidra comme vous le feriez avec une configuration Python typique. Cela s'applique également aux modules que vous avez précédemment installés. Par exemple, nous pouvons installer et utiliser Unicorn pour émuler du code ARM dans Ghidra.