
Plugin de exploración de cobertura de código para Ghidra
Desarrollado por Austin Peavy - https://github.com/aus10pv
Publicado como código abierto por NCC Group Plc - https://www.nccgroup.com/
Publicado bajo la licencia Apache 2.0 (consulte LICENSE para obtener más información)

Cartographer es un plugin de mapeo de cobertura de código para Ghidra, que permite a los investigadores observar qué partes de un programa se han ejecutado sin necesidad de código fuente.
La última versión estable de Cartographer se puede descargar desde la página de Releases.
File -> Install Extensions...Una vez cargado el plugin, habrá controles adicionales en la ventana CodeBrowser para trabajar con datos de cobertura de código.
Los archivos de cobertura de código se pueden cargar a través del menú Tools: Tools -> Code Coverage -> Load Code Coverage File(s)...
Cuando se carga un archivo de cobertura de código, todos los datos de cobertura se resaltan inmediatamente en la vista Listing y en la vista Decompiler.

La información detallada sobre los datos de cobertura de cada función se puede encontrar en la ventana Code Coverage.
La ventana Code Coverage se puede abrir navegando a Window -> Code Coverage, o presionando Ctrl-Shift-C en Windows (Cmd-Shift-C en Mac).
Esta ventana muestra varios detalles sobre cada función del programa:
Al hacer clic en cualquier función se navegará a la función especificada en la vista Listing y en la vista Decompiler.

El cuadro de entrada Filter se puede utilizar para buscar una función por nombre.
Cualquiera de los datos mostrados en la tabla de cobertura se puede utilizar como filtro de columna.

El menú desplegable en la parte inferior derecha de la ventana Code Coverage se puede utilizar para cambiar rápida y fácilmente entre archivos de cobertura de código cargados.

El cuadro de texto en la parte inferior de la ventana Code Coverage se puede utilizar para realizar operaciones lógicas en archivos de cobertura de código cargados.
Esto puede ser extremadamente útil para examinar diferencias y similitudes entre diferentes ejecuciones de un programa.

A continuación se muestran los operadores lógicos que se pueden utilizar dentro del analizador de expresiones.
&: Obtiene solo el código ejecutado por ambas coberturas|: Obtiene cualquier código ejecutado por cualquiera de las coberturas^: Obtiene solo el código ejecutado que difiere entre las coberturas-: Obtiene solo el código ejecutado que es exclusivo de la cobertura de la izquierdaLas coberturas se referencian por sus IDs alfabéticos en el menú desplegable, como A, B, XY, etc.
Cada operación lógica se agrupa usando paréntesis, y las expresiones pueden tener cualquier longitud o complejidad.
Muestre el código que se ejecutó en ambas coberturas A y B:
A & B
Muestre el código ejecutado que fue diferente entre las coberturas A y B:
A ^ B
Muestre el código que se ejecutó solo en B:
B - A
Combine todos los datos de cobertura encontrados en A y B, y luego encuentre cualquier diferencia con C:
(A | B) ^ C
Se puede usar Gradle para compilar Cartographer desde su código fuente.
Clone el repositorio de Cartographer en GitHub.
$ git clone https://github.com/nccgroup/Cartographer.git
Entre al repositorio y compile con gradle.
$ cd Cartographer
$ gradle -PGHIDRA_INSTALL_DIR=<ghidra_install_dir>
<ghidra_install_dir> con la ruta de su instalación local de Ghidra.Después de compilar, el archivo ZIP del plugin estará ubicado en la carpeta dist/.
Si ha encontrado un error en Cartographer, abra un issue a través de GitHub.
Originalmente inspirado por Lighthouse - https://github.com/gaasedelen/lighthouse