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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/keensecuritylab/binabsinspector
静态分析漏洞扫描器逆向工程模糊测试二进制分析
GitHubkeensecuritylab/binabsinspector

BinAbsInspector

使用基于Ghidra Pcode的抽象解释的静态二进制漏洞扫描器。通过Z3的符号执行检测缓冲区溢出、释放后使用和命令注入等CWE类别。

查看仓库
1.7k245142年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

什么是 BinAbsInspector?

BinAbsInspector(二进制抽象检查器)是一款用于自动化逆向工程和二进制漏洞扫描的静态分析器,是 Keenlab 孵化的一项长期研究项目。它基于抽象解释,并依托 Ghidra 的支持。它使用 Ghidra 的 Pcode 而非汇编语言。目前支持 x86、x64、armv7 和 aarch64 架构的二进制文件。

安装

  • 根据 Ghidra 的文档安装 Ghidra
  • 安装 Z3(测试版本:4.8.15)
  • 注意:Z3 库通常包含两部分:Java 包和原生库。Java 包已包含在 "/lib" 目录中,但我们建议您替换为自己的 Java 包以确保版本兼容。
    • 对于 Windows,从此处下载预编译包,解压 zip 文件,并添加指向 z3-${version}-win/bin 的 PATH 环境变量
    • 对于 Linux,不推荐使用包管理器安装,有两种选择:
      1. 从此处下载合适的预编译包,解压 zip 文件,并将 z3-${version}-glibc-${version}/bin/*.so 复制到 /usr/local/lib/
      2. 或者根据 Building Z3 using make and GCC/Clang 自行编译安装 z3
    • 对于 MacOS,操作与 Linux 类似。
  • 从发布页面下载扩展 zip 文件
  • 根据 Ghidra 扩展说明安装扩展

构建

如果您想开发新功能,请自行构建扩展,更多信息请参考开发指南。

  • 安装 Ghidra 和 Z3
  • 安装 Gradle 7.x(测试版本:7.4)
  • 拉取仓库
  • 在仓库根目录下运行 gradle buildExtension
  • 扩展将生成在 dist/${GhidraVersion}_${date}_BinAbsInspector.zip

使用方法

您可以通过无头模式、GUI 模式或 Docker 运行 BinAbsInspector。

  • 使用 Ghidra 无头模式。
root@kitploit:~
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"

<projectPath> -- Ghidra 项目路径。
<projectName> -- Ghidra 项目名称。
<scriptParams> -- 分析器的参数,提供以下选项:

  • 使用 Ghidra GUI

    1. 运行 Ghidra 并将目标二进制文件导入项目
    2. 使用默认设置分析二进制文件
    3. 分析完成后,打开 Window -> Script Manager 并找到 BinAbsInspector.java
    4. 双击 BinAbsInspector.java 条目,在配置窗口中设置参数并点击确定
    5. 分析完成后,您可以在控制台窗口中看到 CWE 报告,双击报告中的地址可跳转到对应位置
  • 使用 Docker

root@kitploit:~
git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>

已实现的检查器

目前 BinAbsInspector 支持以下检查器:

  • CWE78(操作系统命令注入)
  • CWE119(缓冲区溢出(通用情况))
  • CWE125(缓冲区溢出(越界读取))
  • CWE134(使用外部控制的格式化字符串)
  • CWE190(整数溢出或回绕)
  • CWE367(检查时间与使用时间争用(TOCTOU))
  • CWE415(双重释放)
  • CWE416(释放后使用)
  • CWE426(不可信搜索路径)
  • CWE467(对指针类型使用 sizeof())
  • CWE476(空指针解引用)
  • CWE676(使用潜在危险函数)
  • CWE787(缓冲区溢出(越界写入))

项目结构

项目结构如下,更多细节请参考技术细节或中文版文章。

root@kitploit:~
├── main
│   ├── java
│   │   └── com
│   │       └── bai
│   │           ├── checkers                       检查器实现
│   │           ├── env
│   │           │   ├── funcs                      函数建模
│   │           │   │   ├── externalfuncs          外部函数建模
│   │           │   │   └── stdfuncs               C++ 标准库建模
│   │           │   └── region                     内存建模
│   │           ├── solver                         分析核心和图模块
│   │           └── util                           工具类
│   └── resources
└── test

您也可以通过 gradle javadoc 构建 javadoc,API 文档将生成在 ./build/docs/javadoc。

致谢

我们采用了 Ghidra 作为基础,并经常利用 JImmutable Collections 以获得更好的性能。
在此,我们对它们的大力帮助表示衷心的感谢!

下载工具
参数描述
[-K <kElement>]KSet 大小限制 K
[-callStringK <callStringMaxLen>]调用字符串最大长度 K
[-Z3Timeout <timeout>]Z3 超时时间
[-timeout <timeout>]分析超时时间
[-entry <address>]入口地址
[-externalMap <file>]外部函数模型配置
[-json]以 JSON 格式输出
[-disableZ3]禁用 Z3
[-all]启用所有检查器
[-debug]启用调试日志输出
[-check "<cweNo1>[;<cweNo2>...]"]启用特定检查器