
Plugin di esplorazione della copertura del codice per Ghidra
Sviluppato da Austin Peavy - https://github.com/aus10pv
Rilasciato come open source da NCC Group Plc - https://www.nccgroup.com/
Rilasciato sotto licenza Apache 2.0 (vedi LICENSE per maggiori informazioni)

Cartographer è un plugin di mappatura della code coverage per Ghidra che consente ai ricercatori di osservare quali parti di un programma sono state eseguite senza richiedere il codice sorgente.
L'ultima versione stabile di Cartographer può essere scaricata dalla pagina Releases.
File -> Install Extensions...Una volta caricato il plugin, nella finestra CodeBrowser saranno disponibili controlli aggiuntivi per lavorare con i dati di code coverage.
I file di code coverage possono essere caricati tramite il menu Tools: Tools -> Code Coverage -> Load Code Coverage File(s)...
Quando viene caricato un file di code coverage, tutti i dati di copertura vengono immediatamente evidenziati nella vista Listing e nella vista Decompiler.

Informazioni dettagliate sui dati di copertura per ciascuna funzione sono disponibili nella finestra Code Coverage.
La finestra Code Coverage può essere aperta andando su Window -> Code Coverage oppure premendo Ctrl-Shift-C su Windows (Cmd-Shift-C su Mac).
Questa finestra mostra vari dettagli su ciascuna funzione del programma:
Facendo clic su una funzione si passerà alla funzione specificata nella vista Listing e nella vista Decompiler.

La casella di input Filter può essere utilizzata per cercare una funzione per nome.
Qualsiasi dato visualizzato nella tabella di copertura può essere utilizzato come filtro di colonna.

Il menu a tendina in basso a destra nella finestra Code Coverage può essere utilizzato per passare rapidamente e facilmente da un file di code coverage caricato all'altro.

La casella di testo in fondo alla finestra Code Coverage può essere utilizzata per eseguire operazioni logiche sui file di code coverage caricati.
Questo può essere estremamente utile per esaminare differenze e somiglianze tra diverse esecuzioni di un programma.

Di seguito sono elencati gli operatori logici che possono essere utilizzati all'interno del parser di espressioni.
&: Ottiene solo il codice eseguito da entrambe le coverage|: Ottiene qualsiasi codice eseguito da una o dall'altra delle coverage^: Ottiene solo il codice eseguito che differisce tra le coverage-: Ottiene solo il codice eseguito che è unico nella coverage di sinistraLe coverage sono identificate dai loro ID alfabetici nel menu a tendina, come A, B, XY, ecc.
Ogni operazione logica è raggruppata tra parentesi e le espressioni possono essere di qualsiasi lunghezza o complessità.
Mostra il codice eseguito in entrambe le coverage A e B:
A & B
Mostra il codice eseguito che era diverso tra le coverage A e B:
A ^ B
Mostra il codice che è stato eseguito solo in B:
B - A
Combina tutti i dati di copertura trovati in A e B, quindi trova eventuali differenze rispetto a C:
(A | B) ^ C
Gradle può essere utilizzato per compilare Cartographer dal suo codice sorgente.
Clona il repository GitHub di Cartographer.
$ git clone https://github.com/nccgroup/Cartographer.git
Entra nel repository e compila con gradle.
$ cd Cartographer
$ gradle -PGHIDRA_INSTALL_DIR=<ghidra_install_dir>
<ghidra_install_dir> con il percorso della tua installazione locale di Ghidra.Dopo la compilazione, il file ZIP del plugin si troverà nella cartella dist/.
Se hai trovato un bug in Cartographer, apri una segnalazione tramite GitHub.
Originariamente ispirato da Lighthouse - https://github.com/gaasedelen/lighthouse