Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Cartographer — 用于 Ghidra 的代码覆盖率探索插件 | Kitploit
工具/GitHubGitHub/nccgroup/cartographer
动态代码分析 (DAST)逆向工程二进制分析
GitHubnccgroup/cartographer

Cartographer

用于 Ghidra 的代码覆盖率探索插件

查看仓库
382352年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Cartographer

绘制代码覆盖率

Version Build Status License
Watchers Stars Downloads

由 Austin Peavy 开发 - https://github.com/aus10pv

由 NCC Group Plc 以开源形式发布 - https://www.nccgroup.com/
根据 Apache 2.0 许可证发布(更多信息请参阅 LICENSE)

Cartographer 界面

描述

Cartographer 是适用于 Ghidra 的代码覆盖率映射插件,使研究人员无需源代码即可观察程序中哪些部分已被执行。

目录

  • 主要功能
  • 安装
    • 加载插件
  • 使用方法
    • 加载代码覆盖率文件
    • 代码覆盖率详细信息
    • 在覆盖率之间切换
    • 表达式解析器
      • 语法
      • 示例
  • 贡献
    • 从源代码构建
    • 报告 Bug
  • 致谢

主要功能

  • 为已执行代码着色
    • 函数图
    • 反汇编(Listing)视图
    • 反编译器视图
  • 颜色完全可自定义
  • 支持 Ghidra 主题
  • 加载 DRCOV 文件和自定义 EZCOV 文件
    • 有关 EZCOV 格式的详细信息,请参阅 EZCOV.md
  • 提供函数覆盖率的详细概览
    • 包含热力图,展示每个函数的执行程度
  • 轻松切换已加载的覆盖率文件
  • 按名称搜索函数
  • 按覆盖率等条件筛选结果
  • 强大的表达式解析器
    • 对多个已加载的覆盖率执行逻辑运算
  • 支持不同地址空间中的覆盖率

安装

可以从 Releases 页面下载 Cartographer 的最新稳定版本。

加载插件

  1. 启动 Ghidra。
  2. 打开 Install Extensions 窗口。
    • File -> Install Extensions...
  3. 单击右上角的绿色“+”图标。
  4. 选择下载的 ZIP 文件,将插件加载到 Ghidra 中。
  5. 单击“OK”按钮退出 Install Extensions 窗口。
  6. 按提示重启 Ghidra。

使用方法

插件加载后,CodeBrowser 窗口中将出现用于处理代码覆盖率数据的附加控件。

加载代码覆盖率文件

可以通过 Tools 菜单加载代码覆盖率文件:Tools -> Code Coverage -> Load Code Coverage File(s)...

加载代码覆盖率文件后,所有覆盖率数据会立即在 Listing 视图和 Decompiler 视图中高亮显示。

加载代码覆盖率文件

代码覆盖率详细信息

每个函数的覆盖率数据详细信息可在 Code Coverage 窗口中找到。

可以通过导航到 Window -> Code Coverage 打开 Code Coverage 窗口,或在 Windows 上按 Ctrl-Shift-C(在 Mac 上按 Cmd-Shift-C)。

该窗口显示程序中每个函数的各种详细信息:

  • 覆盖率 %:函数中被执行部分的百分比
  • 名称:函数名称
  • 地址:函数地址(入口点)
  • 命中块数:已执行的基本块数量
  • 命中指令数:已执行的指令数量
  • 函数大小:函数大小(以字节为单位)

单击任意函数将在 Listing 视图和 Decompiler 视图中跳转到相应函数。

打开 Code Coverage 窗口

搜索和筛选

Filter 输入框可用于按名称搜索函数。

覆盖率表中显示的任何数据都可以用作列筛选条件。

搜索和筛选数据

在覆盖率之间切换

Code Coverage 窗口右下角的下拉菜单可用于在已加载的代码覆盖率文件之间快速轻松地切换。

在覆盖率之间切换

表达式解析器

Code Coverage 窗口底部的文本框可用于对已加载的代码覆盖率文件执行逻辑运算。

这对于检查程序不同运行之间的差异和相似之处极其有用。

使用表达式解析器

语法

以下是可在表达式解析器中使用的逻辑运算符。

  • &:仅获取由两个覆盖率共同执行的代码
  • |:获取由任一覆盖率执行的代码
  • ^:仅获取两个覆盖率之间执行不同的代码
  • -:仅获取左侧覆盖率中独有的已执行代码

覆盖率通过下拉菜单中的字母 ID 进行引用,例如 A、B、XY 等。

每个逻辑运算都用括号分组,表达式可以是任意长度或复杂度。

示例

  1. 显示在两个覆盖率 A 和 B 中都被执行的代码:

    root@kitploit:~
    A & B
    
  2. 显示覆盖率 A 和 B 之间执行不同的代码:

    root@kitploit:~
    A ^ B
    
  3. 显示仅在 B 中执行的代码:

    root@kitploit:~
    B - A
    
  4. 合并 A 和 B 中的全部覆盖率数据,然后找出与 C 之间的任何差异:

    root@kitploit:~
    (A | B) ^ C
    

贡献

从源代码构建

可以使用 Gradle 从源代码构建 Cartographer。

  1. 克隆 Cartographer 的 GitHub 仓库。

    root@kitploit:~
    $ git clone https://github.com/nccgroup/Cartographer.git
    
  2. 进入仓库并使用 gradle 构建。

    root@kitploit:~
    $ cd Cartographer
    $ gradle -PGHIDRA_INSTALL_DIR=<ghidra_install_dir>
    
    • 将 <ghidra_install_dir> 替换为你本地 Ghidra 的安装路径。
  3. 构建完成后,插件 ZIP 文件将位于 dist/ 文件夹中。

报告 Bug

如果你在 Cartographer 中发现了 Bug,请通过 GitHub 提交 issue。

致谢

最初灵感源自 Lighthouse - https://github.com/gaasedelen/lighthouse

下载工具