
Plugin d'exploration de couverture de code pour Ghidra
Développé par Austin Peavy - https://github.com/aus10pv
Publié en open source par NCC Group Plc - https://www.nccgroup.com/
Publié sous licence Apache 2.0 (voir LICENSE pour plus d'informations)

Cartographer est un plugin de cartographie de la couverture de code pour Ghidra, permettant aux chercheurs d'observer quelles parties d'un programme ont été exécutées sans avoir besoin du code source.
La dernière version stable de Cartographer peut être téléchargée depuis la page Releases.
File -> Install Extensions...Une fois le plugin chargé, des contrôles supplémentaires seront disponibles dans la fenêtre CodeBrowser pour travailler avec les données de couverture de code.
Les fichiers de couverture de code peuvent être chargés via le menu Tools : Tools -> Code Coverage -> Load Code Coverage File(s)...
Lorsqu'un fichier de couverture de code est chargé, toutes les données de couverture sont immédiatement mises en évidence dans la vue Listing et la vue Decompiler.

Des informations détaillées sur les données de couverture de chaque fonction sont disponibles dans la fenêtre Code Coverage.
La fenêtre Code Coverage peut être ouverte en allant dans Window -> Code Coverage, ou en appuyant sur Ctrl-Shift-C sous Windows (Cmd-Shift-C sous Mac).
Cette fenêtre affiche divers détails sur chaque fonction du programme :
Cliquer sur une fonction permet de naviguer vers la fonction sélectionnée dans la vue Listing et la vue Decompiler.

Le champ de saisie Filter peut être utilisé pour rechercher une fonction par nom.
Toutes les données affichées dans le tableau de couverture peuvent être utilisées comme filtre de colonne.

La liste déroulante en bas à droite de la fenêtre Code Coverage permet de basculer rapidement et facilement entre les fichiers de couverture chargés.

La zone de texte en bas de la fenêtre Code Coverage peut être utilisée pour effectuer des opérations logiques sur les fichiers de couverture chargés.
Cela peut être extrêmement utile pour examiner les différences et les similitudes entre différentes exécutions d'un programme.

Voici les opérateurs logiques qui peuvent être utilisés dans l'analyseur d'expressions.
&: Obtient uniquement le code exécuté par les deux couvertures|: Obtient tout code exécuté par l'une ou l'autre des couvertures^: Obtient uniquement le code exécuté qui diffère entre les couvertures-: Obtient uniquement le code exécuté qui est exclusif à la couverture de gaucheLes couvertures sont référencées par leurs identifiants alphabétiques dans le menu déroulant, comme A, B, XY, etc.
Chaque opération logique est regroupée à l'aide de parenthèses, et les expressions peuvent être de n'importe quelle longueur ou complexité.
Affiche le code exécuté dans les deux couvertures A et B :
A & B
Affiche le code exécuté qui était différent entre les couvertures A et B :
A ^ B
Affiche le code qui a été exécuté uniquement dans B :
B - A
Combinez toutes les données de couverture trouvées dans A et B, puis recherchez les différences par rapport à C :
(A | B) ^ C
Gradle peut être utilisé pour compiler Cartographer à partir de son code source.
Clonez le dépôt GitHub de Cartographer.
$ git clone https://github.com/nccgroup/Cartographer.git
Entrez dans le dépôt et compilez avec Gradle.
$ cd Cartographer
$ gradle -PGHIDRA_INSTALL_DIR=<ghidra_install_dir>
<ghidra_install_dir> par le chemin de votre installation locale de Ghidra.Après la compilation, le fichier ZIP du plugin se trouvera dans le dossier dist/.
Si vous avez trouvé un bogue dans Cartographer, veuillez ouvrir un ticket via GitHub.
À l'origine inspiré par Lighthouse - https://github.com/gaasedelen/lighthouse