
Plugin de Exploração de Cobertura de Código para Ghidra
Desenvolvido por Austin Peavy - https://github.com/aus10pv
Lançado como código aberto pela NCC Group Plc - https://www.nccgroup.com/
Lançado sob a licença Apache 2.0 (consulte LICENSE para obter mais informações)

Cartographer é um plugin de mapeamento de cobertura de código para Ghidra, permitindo que pesquisadores observem quais partes de um programa foram executadas sem exigir o código-fonte.
A versão estável mais recente do Cartographer pode ser baixada na página de Releases.
File -> Install Extensions...Quando o plugin estiver carregado, haverá controles adicionais na janela CodeBrowser para trabalhar com dados de cobertura de código.
Os arquivos de cobertura de código podem ser carregados pelo menu Tools: Tools -> Code Coverage -> Load Code Coverage File(s)...
Quando um arquivo de cobertura de código é carregado, todos os dados de cobertura são imediatamente destacados na visualização Listing e na visualização Decompiler.

Informações detalhadas sobre os dados de cobertura de cada função podem ser encontradas na janela Code Coverage.
A janela Code Coverage pode ser aberta navegando até Window -> Code Coverage, ou pressionando Ctrl-Shift-C no Windows (Cmd-Shift-C no Mac).
Esta janela mostra vários detalhes sobre cada função do programa:
Clicar em qualquer função navegará para a função especificada na visualização Listing e na visualização Decompiler.

A caixa de entrada Filtro pode ser usada para pesquisar uma função pelo nome.
Qualquer um dos dados exibidos na tabela de cobertura pode ser usado como filtro de coluna.

O menu suspenso no canto inferior direito da janela Code Coverage pode ser usado para alternar rápida e facilmente entre arquivos de cobertura de código carregados.

A caixa de texto na parte inferior da janela Code Coverage pode ser usada para realizar operações lógicas em arquivos de cobertura de código carregados.
Isso pode ser extremamente útil para examinar diferenças e semelhanças entre diferentes execuções de um programa.

Abaixo estão os operadores lógicos que podem ser usados no analisador de expressões.
&: Obtém apenas o código executado por ambas as coberturas|: Obtém qualquer código executado por qualquer uma das coberturas^: Obtém apenas o código executado que difere entre as coberturas-: Obtém apenas o código executado que é exclusivo da cobertura à esquerdaAs coberturas são referenciadas por seus IDs alfabéticos no menu suspenso, como A, B, XY, etc.
Cada operação lógica é agrupada usando parênteses, e as expressões podem ter qualquer tamanho ou complexidade.
Mostre o código que foi executado em ambas as coberturas A e B:
A & B
Mostre o código executado que foi diferente entre as coberturas A e B:
A ^ B
Mostre o código que foi apenas executado em B:
B - A
Combine todos os dados de cobertura encontrados em A e B e, em seguida, encontre quaisquer diferenças em relação a C:
(A | B) ^ C
O Gradle pode ser usado para compilar o Cartographer a partir do seu código-fonte.
Clone o repositório do Cartographer no GitHub.
$ git clone https://github.com/nccgroup/Cartographer.git
Entre no repositório e compile com gradle.
$ cd Cartographer
$ gradle -PGHIDRA_INSTALL_DIR=<ghidra_install_dir>
<ghidra_install_dir> pelo caminho da sua instalação local do Ghidra.Após a compilação, o arquivo ZIP do plugin estará localizado na pasta dist/.
Se você encontrou um bug no Cartographer, por favor abra uma issue via GitHub.
Originalmente inspirado pelo Lighthouse - https://github.com/gaasedelen/lighthouse