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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Binvariants — 基于寄存器级不变量引导的模糊测试框架,针对闭源二进制程序,利用可能的不变量违反来发现二进制可执行文件中的崩溃和缺陷。 | Kitploit
工具/GitHubGitHub/futureslab/binvariants
漏洞分析漏洞利用模糊测试二进制分析
GitHubfutureslab/binvariants

Binvariants

基于寄存器级不变量引导的模糊测试框架,针对闭源二进制程序,利用可能的不变量违反来发现二进制可执行文件中的崩溃和缺陷。

查看仓库
511个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Binvariants:面向二进制的寄存器级不变量引导模糊测试

Binvariants logo

本仓库为 Binvariants 的源代码:一个原型模糊测试框架,利用寄存器级潜在不变性违规对二进制程序进行模糊测试。

该工作发表于我们的论文 Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants,将出现在 2026 年 ACM 国际软件基础工程会议 (FSE'26) 上。

  • 安装 Binvariants
  • 使用 Binvariants
  • 附加说明
  • Bug 奖杯展示


Binvariants workflow
Binvariants workflow

引用本仓库: @inproceedings{yang:binvariants, title = {Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants}, author = {Zao Yang and Stefan Nagy}, year = {2026}, issue_date = {July 2026}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {3}, number = {FSE}, journal = {Proc. ACM Softw. Eng.}}
开发者:杨早 ([email protected]) 和 Stefan Nagy ([email protected])
许可证:MIT 许可证
免责声明:本软件按“原样”提供,不提供任何担保。

安装 Binvariants

Binvariants 构建于 AFL++ 和 QEMU-AFL 之上。 在搭建 Binvariants 之前,请先安装这些项目所需的依赖项:

root@kitploit:~
sudo apt-get update
sudo apt-get install -y build-essential python3-dev automake cmake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools cargo libgtk-3-dev
# 尝试安装 llvm-18,如果失败则安装发行版默认版本
sudo apt-get install -y lld-18 llvm-18 llvm-18-dev clang-18 || sudo apt-get install -y lld llvm llvm-dev clang
sudo apt-get install -y gcc-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-dev
sudo apt-get install -y meson ninja-build # 用于 QEMU 模式

Binvariants 包含两个组件:

  • 1-不变量学习器/
  • 2-模糊测试器/

要构建它们,请进入相应目录并运行以下命令:

root@kitploit:~
./1_patch.sh
./2_build.sh

使用 Binvariants

示例/ 包含使用 Binvariants 对 nconvert 二进制程序进行模糊测试的示例脚本和测试用例。您可以修改脚本以对其他二进制程序进行模糊测试。

设置

在使用 Binvariants 之前,请禁用 ASLR,因为在不变量学习和模糊测试之间需要一致的基本块地址:

root@kitploit:~
sudo sysctl -w kernel.randomize_va_space=0

学习寄存器级潜在不变量 (RLI)

要学习不变量,请运行:

root@kitploit:~
./Example/1-learn_invs.sh [Binvariants_Root]

推断出的 RLI 将保存在 1-learn_invs.sh 中 BINV_TRACES_DIR 指定的目录下,文件名为:[PROGRAM]_trace_qemu_invs。

使用 RLI 进行模糊测试

要使用 Binvariants 开始模糊测试,请运行:

root@kitploit:~
./Example/2-fuzz.sh [Binvariants_Root] [Fuzz_Time] [Trial_Number]

例如,在 Binvariants 根目录下运行第 1 次试验的 48 小时模糊测试活动:

root@kitploit:~
./Example/2-fuzz.sh $PWD 48h 1

附加说明

以下是对 Binvariants 的潜在改进。

自适应学习不变量

目前,Binvariants 在模糊测试之前学习不变量,然后单独运行模糊测试。一个可能的改进是在模糊测试期间学习不变量,并在发生违规时更新它们,从而使反馈随时间演变。

可能的设计考虑:

  1. 如果在执行某个测试用例时更新了不变量,而该测试用例随后崩溃或超时,则可能需要回滚更新。一个实用的解决方案是对不变量的副本进行更新,并且仅当该测试用例正常完成(即 FSRV_RUN_OK)时才提交该副本。
  2. 随着模糊测试的进行和不变量的更新,违规自然会发生得越来越少。这可能导致 AFL++ 反复选择早期阶段的测试用例(这些用例触发更多违规,但代表了不太成熟的程序状态)。可能需要在 AFL++ 端调整权重/perf_score/top_rated,以确保后期更具代表性的测试用例被选中。

跨基本块不变量

Binvariants 目前专注于单块不变量。一个潜在的改进是支持跨块不变量。这需要新的数据结构来跟踪跨块边界的寄存器值,以及在控制权在块之间转移时检查违规的额外插桩。

Bug 奖杯展示

如果您使用 Binvariants 发现任何其他 bug,请告诉我们!

致谢

本材料基于由国家科学基金会 (NSF) 资助号 2419798 以及国防高级研究计划局 (DARPA) 资助号 FA8750-24-2-0002、分包合同号 GR105409-SUB00001384 支持的工作。

下载工具
程序报告的 Bug
nconverthttps://newsgroup.xnview.com/viewtopic.php?t=49598
xls2csvhttps://github.com/vbwagner/catdoc/issues/6, https://github.com/vbwagner/catdoc/issues/7, https://github.com/vbwagner/catdoc/issues/8, https://github.com/vbwagner/catdoc/issues/9, https://github.com/vbwagner/catdoc/issues/10, https://github.com/vbwagner/catdoc/issues/11, https://github.com/vbwagner/catdoc/issues/12, https://github.com/vbwagner/catdoc/issues/13
gpmfhttps://github.com/gopro/gpmf-parser/issues/201, https://github.com/gopro/gpmf-parser/issues/202, https://github.com/gopro/gpmf-parser/issues/203
hdf5https://github.com/HDFGroup/hdf5/issues/5831, https://github.com/HDFGroup/hdf5/issues/5832, https://github.com/HDFGroup/hdf5/issues/5834
stormhttps://github.com/ladislav-zezula/StormLib/issues/397, https://github.com/ladislav-zezula/StormLib/issues/398
mp4splithttps://github.com/axiomatic-systems/Bento4/issues/1038, https://github.com/axiomatic-systems/Bento4/issues/1039
cpdfhttps://github.com/johnwhitington/camlpdf/issues/75
sfconverthttps://github.com/mpruett/audiofile/issues/73