Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
lighthouse — 面向逆向工程师的覆盖率浏览器 | Kitploit
工具/GitHubGitHub/gaasedelen/lighthouse
静态分析动态分析 (沙盒)漏洞分析代码分析逆向工程调试器模糊测试二进制分析论文与研究
GitHubgaasedelen/lighthouse

lighthouse

面向逆向工程师的覆盖率浏览器

2.6k33647个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
分享

Lighthouse - 逆向工程师的覆盖率浏览器

Lighthouse 插件

概述

Lighthouse 是一款功能强大的代码覆盖率浏览器,适用于 IDA Pro 和 Binary Ninja,为软件研究人员提供独特的交互式控制,使其无需符号或源代码即可研究原生应用程序的执行映射。

本项目在 IDA 的 2017 年插件竞赛 中获得第二名,并因其对安全研究行业的贡献而在 2021 年 Pwnie Awards 中获得提名。

特别感谢 @0vercl0k 提供的灵感。

版本发布

  • v0.9 -- 支持 Python 3、自定义覆盖率格式、覆盖率交叉引用、主题子系统等更多功能。
  • v0.8 -- 支持 Binary Ninja、HTML 覆盖率报告、一致的样式、多项调整和错误修复。
  • v0.7 -- Frida、C++ 名称还原、上下文菜单、函数前缀、调整、错误修复。
  • v0.6 -- Intel pintool、圈复杂度、批量加载、错误修复。
  • v0.5 -- 搜索、支持 IDA 7、多项改进、稳定性。
  • v0.4 -- 大部分计算现在为异步、错误修复。
  • v0.3 -- 覆盖率组合、交互式组合 shell。
  • v0.2 -- 多文件支持、性能改进、错误修复。
  • v0.1 -- 初始版本

安装

Lighthouse 是一款跨平台(Windows、macOS、Linux)的 Python 2/3 插件。它没有任何第三方依赖,使代码既便携又易于安装。

请根据您使用的反汇编器使用以下说明。

IDA 安装

  1. 在 IDA 的 Python 控制台中,运行以下命令以查找其插件目录:
    • import idaapi, os; print(os.path.join(idaapi.get_user_idadir(), "plugins"))
  2. 将本仓库 /plugins/ 文件夹的内容复制到所列目录中。
  3. 重启您的反汇编器。

Binary Ninja 安装

Lighthouse 可以通过 Binary Ninja 的插件管理器安装,支持 v3.5 及更新版本。

  1. 通过以下子菜单打开 Binary Ninja 的插件管理器:
    • Edit -> Preferences -> Manage Plugins
  2. 在插件管理器中搜索 Lighthouse,然后点击右下角的 Enable 按钮。
  3. 重启您的反汇编器。

使用方法

正确安装后,反汇编器中会出现几个新的菜单项。这些是用户加载覆盖率数据并开始使用 Lighthouse 的入口点。

Lighthouse 菜单项

Lighthouse 能够加载几种不同“风格”的覆盖率数据。要生成可加载到 Lighthouse 中的覆盖率数据,请查看本仓库 coverage 目录中的 README。

覆盖率着色

在使用 Lighthouse 时,它会在反汇编器中所有可用的代码查看器上“着色”当前活动的覆盖率数据。具体来说,这将应用于您的线性反汇编、图形和反编译器窗口。

Lighthouse 覆盖率着色

在 Binary Ninja 中,仅支持线性反汇编、图形和 IL 视图。随着功能稳定,对 Binary Ninja 中反编译器输出着色的支持将在不久的将来添加到 Lighthouse 中。

覆盖率概览

覆盖率概览是一个可停靠的窗口部件,一旦覆盖率数据加载到 Lighthouse 中就会打开。

Lighthouse 覆盖率概览

这个交互式窗口部件提供了已加载覆盖率数据的函数级视图。它还包含许多工具,用于管理已加载数据并驱动更高级形式的覆盖率分析。

上下文菜单

右键单击覆盖率概览中的表格将弹出一个上下文菜单,其中包含一些基本功能,用于从表格中提取信息,或作为逆向工程过程的一部分操作数据库。

Lighthouse 上下文菜单

如果您认为还有其他有用的操作可以添加到此上下文菜单中,请提交 issue,它们将被考虑纳入 Lighthouse 的未来版本。

覆盖率组合框

已加载的覆盖率和用户构建的组合可以通过覆盖率组合框进行选择或删除。

Lighthouse 覆盖率组合框

HTML 覆盖率报告

Lighthouse 可以生成基本的 HTML 覆盖率报告。示例报告可在此处查看。

Lighthouse HTML 报告

覆盖率 Shell

覆盖率概览窗口的底部是覆盖率 shell。此 shell 可用于执行基于逻辑的操作,以组合或操作已加载的覆盖率集合。

Lighthouse 覆盖率组合

此功能在探索多次运行之间程序执行的关系时非常有用。换句话说,该 shell 可用于在覆盖率集合之间“diff”执行情况,并提取出在其各自部分的噪声中被掩盖的更深层含义。

组合语法

覆盖率组合,或如上所示的 Composing,是通过组合 shell 上的简单表达式语法和“简写”覆盖率符号(A 到 Z)实现的。

语法标记

  • 逻辑运算符:|, &, ^, -
  • 覆盖率符号:A, B, C, ..., Z, *
  • 括号:(...)

组合示例

  1. 覆盖率 A 和覆盖率 B 之间共享的执行代码:
A & B
  1. 仅覆盖率 A 独有的执行代码:
A - B
  1. A 或 B 独有但 C 没有的执行代码:
(A | B) - C

表达式可以具有任意长度或复杂度,但组合的求值可能从右到左进行。因此,对于可能产生歧义的表达式,建议使用括号。

热 Shell

此外,还有一种“热 Shell”模式,可以实时异步求值并缓存用户组合。

Lighthouse 热 Shell

热 shell 是进入无引导探索组合关系的自然入口。

搜索

使用 shell,您可以通过在查询前加上 / 来搜索和过滤覆盖率表中列出的函数。

Lighthouse 搜索

shell 的头部将显示仅根据剩余函数计算出的更新覆盖率百分比。这在分析特定函数族的覆盖率时非常有用。

跳转

在 shell 中输入地址或函数名可用于跳转到表格中相应的函数条目。

Lighthouse 跳转

覆盖率交叉引用(Xref)

在使用 Lighthouse 时,您可以右键单击任何基本块(或指令),并使用“Coverage Xref”操作来查看哪些覆盖率集合执行了所选块。双击任何列出的条目将立即切换到该覆盖率集合。

Lighthouse Xref

这与“Coverage Batch”功能配合得很好,后者允许您快速将数千个覆盖率文件加载并聚合到 Lighthouse 中。交叉引用一个块并选择一个“集合”将从磁盘加载“有罪”集合作为新的覆盖率集合,供您独立于批次进行探索。

主题

Lighthouse 附带两个默认主题——一个“浅色”主题和一个“深色”主题。根据您的反汇编器当前使用的颜色,Lighthouse 将尝试选择看起来最合适的主题。

Lighthouse 主题

主题文件以简单的 JSON 格式存储在磁盘上,并且高度可配置。如果您对默认主题或颜色不满意,可以创建自己的主题并将其放入用户主题目录中。

Lighthouse 将记住您的主题偏好,以供将来加载和使用。

未来工作

如果时间和动力允许,未来工作可能包括:

  • 催促 Vector35 修复 Binary Ninja 中的 HLIL 高亮问题(bug)
  • 异步组合、着色、元数据收集
  • 多文件/覆盖率支持
  • 基于性能分析的热图/着色
  • 覆盖率与性能分析树状图
  • 额外的覆盖率来源、跟踪格式等
  • 改进的伪代码着色
  • Lighthouse 控制台访问、无头使用
  • 自定义主题
  • Python 3 支持

我欢迎外部贡献、issue 和功能请求。如果您希望它们被考虑纳入未来版本,请向本仓库的 develop 分支提交任何 pull request。

作者

  • Markus Gaasedelen (@gaasedelen)
下载工具