
Code-Coverage-Erkundungs-Plugin für Ghidra
Entwickelt von Austin Peavy - https://github.com/aus10pv
Als Open Source veröffentlicht von NCC Group Plc - https://www.nccgroup.com/
Veröffentlicht unter der Apache-2.0-Lizenz (siehe LICENSE für weitere Informationen)

Cartographer ist ein Plugin zur Kartierung der Codeabdeckung für Ghidra, das es Forschern ermöglicht zu beobachten, welche Teile eines Programms ausgeführt wurden, ohne den Quellcode zu benötigen.
Die neueste stabile Version von Cartographer kann von der Releases-Seite heruntergeladen werden.
File -> Install Extensions...Sobald das Plugin geladen ist, stehen im CodeBrowser-Fenster zusätzliche Steuerelemente für die Arbeit mit Codeabdeckungsdaten zur Verfügung.
Code-Coverage-Dateien können über das Menü Tools -> Code Coverage -> Load Code Coverage File(s)... geladen werden.
Wenn eine Code-Coverage-Datei geladen wird, werden alle Abdeckungsdaten sofort in der Listing-Ansicht und der Decompiler-Ansicht hervorgehoben.

Detaillierte Informationen zu den Abdeckungsdaten jeder Funktion finden Sie im Fenster Code Coverage.
Das Fenster Code Coverage kann geöffnet werden, indem Sie zu Window -> Code Coverage navigieren, oder durch Drücken von Ctrl-Shift-C unter Windows (Cmd-Shift-C auf dem Mac).
Dieses Fenster zeigt verschiedene Details zu jeder Funktion im Programm:
Ein Klick auf eine Funktion navigiert zur entsprechenden Funktion in der Listing-Ansicht und der Decompiler-Ansicht.

Das Filter-Eingabefeld kann verwendet werden, um nach einer Funktion anhand des Namens zu suchen.
Alle in der Abdeckungstabelle angezeigten Daten können als Spaltenfilter verwendet werden.

Über das Dropdown-Menü unten rechts im Fenster Code Coverage können Sie schnell und einfach zwischen geladenen Code-Coverage-Dateien wechseln.

Das Textfeld am unteren Rand des Fensters Code Coverage kann verwendet werden, um logische Operationen auf geladenen Code-Coverage-Dateien durchzuführen.
Dies kann äußerst nützlich sein, um Unterschiede und Gemeinsamkeiten zwischen verschiedenen Läufen eines Programms zu untersuchen.

Im Folgenden sind die logischen Operatoren aufgeführt, die im Ausdrucksparser verwendet werden können.
&: Liefert nur den Code, der von beiden Abdeckungen ausgeführt wurde|: Liefert jeden Code, der von einer der Abdeckungen ausgeführt wurde^: Liefert nur den ausgeführten Code, der zwischen den Abdeckungen abweicht-: Liefert nur ausgeführten Code, der ausschließlich in der linken Abdeckung enthalten istCoverages werden über ihre alphabetischen IDs im Dropdown-Menü referenziert, z. B. A, B, XY usw.
Jede logische Operation wird mit Klammern gruppiert, und Ausdrücke können beliebig lang oder komplex sein.
Zeigen Sie den Code, der in beiden Abdeckungen A und B ausgeführt wurde:
A & B
Zeigen Sie den ausgeführten Code, der sich zwischen den Abdeckungen A und B unterscheidet:
A ^ B
Zeigen Sie Code, der nur in B ausgeführt wurde:
B - A
Kombinieren Sie alle Abdeckungsdaten aus A und B und finden Sie dann Unterschiede zu C:
(A | B) ^ C
Gradle kann verwendet werden, um Cartographer aus seinem Quellcode zu bauen.
Klonen Sie das Cartographer GitHub-Repository.
$ git clone https://github.com/nccgroup/Cartographer.git
Wechseln Sie in das Repository und bauen Sie mit Gradle.
$ cd Cartographer
$ gradle -PGHIDRA_INSTALL_DIR=<ghidra_install_dir>
<ghidra_install_dir> durch den Pfad zu Ihrer lokalen Ghidra-Installation.Nach dem Build befindet sich die Plugin-ZIP-Datei im Ordner dist/.
Wenn Sie einen Fehler in Cartographer gefunden haben, eröffnen Sie bitte ein Issue über GitHub.
Ursprünglich inspiriert von Lighthouse - https://github.com/gaasedelen/lighthouse