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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Kam1n0-Community — 可扩展的汇编分析平台,用于索引、克隆搜索和可执行文件分类,跨多种架构采用静态、动态及机器学习技术。 | Kitploit
工具/GitHubGitHub/mcgill-dmas/kam1n0-community
漏洞分析代码分析逆向工程模糊测试二进制分析机器学习
GitHubmcgill-dmas/kam1n0-community

Kam1n0-Community

可扩展的汇编分析平台,用于索引、克隆搜索和可执行文件分类,跨多种架构采用静态、动态及机器学习技术。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Kam1n0 v2 是什么?

image GitHub (pre-)release Github All Releases JDK PRs Welcome

构建最新开发版本 (Windows) 测试发布版本构建 (Windows)

Kam1n0 v2.x 是一个可扩展的汇编管理与分析平台。它允许用户首先将(大型)二进制文件集合索引到不同的仓库中,并提供诸如克隆搜索和分类等不同的分析服务。它通过使用 Application 的概念,支持多租户访问和管理汇编仓库。一个应用实例包含其独有的仓库,并提供专门的分析服务。考虑到逆向工程任务的多样性,Kam1n0 v2.x 服务器目前提供三种不同类型的克隆搜索应用:Asm-Clone、Sym1n0 和 Asm2Vec,以及基于 Asm2Vec 的 可执行文件分类。未来可以向平台添加新的应用类型。

用户可以创建多个应用实例。一个应用实例可以在特定用户组之间共享。应用仓库的读写访问权限和启用/禁用状态可以由应用所有者控制。Kam1n0 v2.x 服务器可以通过几个共享资源池同时服务于多个应用。

Kam1n0 由 Steven H. H. Ding 和 Miles Q. Li 在加拿大麦吉尔大学数据挖掘与安全实验室的 Benjamin C. M. Fung 指导下开发。它曾在 Hex-Rays 插件大赛 2015 中获得二等奖。如果您觉得 Kam1n0 有用,请引用我们的论文:

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Kam1n0: MapReduce-based Assembly Clone Search for Reverse Engineering. 发表在 Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (SIGKDD), 页码 461-470, 旧金山, CA: ACM Press, 2016年8月.

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Asm2Vec: boosting static representation robustness for binary clone search against code obfuscation and compiler optimization. 发表在 Proceedings of the 40th IEEE Symposium on Security and Privacy (S&P), 18 页, 旧金山, CA: IEEE Computer Society, 2019年5月.

Asm-Clone

Asm-Clone 应用尝试解决汇编函数的高效子图搜索问题(即图同构问题)(在 230 万函数规模下平均查询时间 <1.3 秒,平均索引时间 <30 毫秒)。给定一个目标函数(如下左图所示),它可以识别仓库中其他函数中的克隆子图(如下右图所示)。

  • 应用类型:Asm-Clone
  • Kam1n0 v1.x 中使用的原始克隆搜索服务。
  • 目前支持 Meta-PC、ARM、PowerPC 和 TMS320c6(实验性)。
  • 支持特定汇编代码家族内的子图克隆搜索。
    • + 结果可解释性好:可分解为子图。
    • + 在给定代码家族内搜索准确度高。
    • + 适用于大型二进制文件不同补丁或版本的差异分析。
    • - 对指令集变化、优化和混淆相对更敏感。
    • - 需要预先定义汇编代码语言的语法。
    • - 仓库中需要有相同选择家族的汇编代码。

Sym1n0

通过差异化模糊测试和约束求解进行语义克隆搜索。一种高效且可扩展的动态-静态混合方法(在 150 万函数规模下平均查询时间 <1 秒,平均索引时间 <100 毫秒)。给定一个目标函数(如下左图所示),它可以识别仓库中其他函数中的克隆子图(如下右图所示)。支持抽象语法图的可视化。

  • 应用类型:Sym1n0(仅 v2)
  • 通过符号执行和具体执行进行克隆搜索。
  • 基于函数不同的输入/输出行为进行区分。
  • 克隆搜索在由 Vex IR(基于 LibVex)构建的抽象语法图上进行。
    • + 跨不同汇编代码家族的克隆搜索。
      • 例如,索引了 x86 二进制,但查询的是 ARM 代码。
    • + 子图克隆搜索。
    • + 通过 LibVex 支持广泛的家族。
      • x86、AMD64、MIPS32、MIPS64、PowerPC32、PowerPC64、ARM32 和 ARM64。
    • + 高效的动态-静态混合方法。
    • + 非常适合分析针对不同处理器编译的固件。
    • - 对大量图操作(如完全平坦化)敏感。
    • - 对基本块完整性的大规模破坏敏感。

Asm2Vec

Asm2Vec 利用表示学习。它理解汇编代码的词汇语义关系。例如,xmm* 寄存器在语义上与向量操作(如 addps)相关。memcpy 类似于 strcpy。下图展示了从 libgmp 中同一源文件 gmpz_tdiv_r_2exp 编译出的不同汇编函数。从左到右,汇编函数分别使用 GCC O0 选项、GCC O3 选项、O-LLVM 混淆器控制流图平坦化选项和 LLVM 混淆器虚假控制流图选项编译。Asm2Vec 可以静态地将它们识别为克隆。

  • 利用表示学习。
  • 理解汇编代码的词汇语义关系。
    • + 针对重度代码混淆技术的克隆搜索达到当前最优水平。 *(O-LLVM 所有选项应用后准确率 >0.8,多次迭代)。
    • + 针对代码优化的克隆搜索达到当前最优水平。 *(O0 与 O3 之间准确率 >0.8,O2 与 O3 之间准确率 >0.94)
    • + 结果甚至优于最新的动态方法。
    • + 比最近的动态方法高效得多。
    • + 不需要定义架构。通过阅读大量代码自我学习。
    • + 静态方法:高效且可扩展。
    • - 无子图。
    • - 假设汇编代码来自同一处理器家族。
    • - 静态方法:无法识别跳转表等。

可执行文件分类

在此应用中,用户定义一组基于功能相关性的软件类别,并提供属于每个类别的二进制文件。然后系统自动将函数分组到簇中,使得簇内的函数通过克隆关系直接或间接相连。对分类有区分力的簇被保留下来,并作为其类别的签名。给定一个目标二进制文件,系统显示它属于每个软件类别的程度。

  • 使用 Asm2Vec 作为其函数相似度计算模型
    • + 提供可解释的分类结果。
    • + 学习每个类别的共同特征(即函数簇)。
    • + 相比普通机器学习模型,能够处理更小且不平衡的数据集。
    • - 局限性在于,系统工作的前提是同一类别中的二进制文件共享某些公共函数。

平台概览

下图展示了 Kam1n0 v2.x 的主要 UI 组件和功能。我们采用 Material Design。通常,每个用户都有一个应用列表、一个运行作业列表和一个结果文件列表。

  • 应用列表显示用户拥有的和其他人共享的应用实例。
  • 运行作业列表显示大型查询(如 chrome.dll)和索引过程的进度。
  • 结果文件列表显示已保存的结果。 有关 UI 设计的更多细节,请参阅我们的详细教程。

安装说明

Kam1n0 的当前版本包含两个安装程序:核心服务器和 IDA Pro 插件。

安装 Kam1n0 服务器

Kam1n0 核心引擎使用纯 Java 编写。您需要以下依赖项:

  • [必需] 来自 Oracle 的最新 x64 11.x JRE/JDK 发行版。
  • [可选] 最新版本的 IDA Pro,并安装 idapython 插件。IDA Pro 应已随附安装 Python 插件和运行时。如有必要,请重新安装 IDA Pro。

从我们的发布页面下载 Kam1n0-Server.msi 文件。按照说明安装服务器。系统将提示您选择安装路径。如果服务器不需要处理任何反汇编工作,IDA Pro 是可选的。换句话说,客户端使用 Kam1n0 的 IDA Pro 插件。强烈建议在 Kam1n0 服务器所在机器上安装 IDA Pro。Kam1n0 服务器将通过查找用于打开 .i64 文件的默认应用程序自动检测您的 IDA Pro。

安装 IDA Pro 插件

Kam1n0 IDA Pro 插件的逻辑部分使用 Python 编写,渲染部分使用 HTML/JavaScript 编写。安装时需要以下依赖项:

  • [必需] IDA Pro(>6.7)并安装 idapython 插件。IDA Pro 应已随附安装 Python 插件和运行时。如有必要,请重新安装 IDA Pro。

接下来,从我们的发布页面下载 Kam1n0-IDA-Plugin.msi 安装程序。按照说明安装插件和运行时。请注意,插件必须安装在 IDA Pro 的 plugins 文件夹中,该文件夹位于 $IDA_PRO_PATH$/plugins。例如,在 Windows 上,路径可能是 C:/Program Files (x86)/IDA 6.95/plugins。安装程序将检测并验证该路径。

在基于 Ubuntu/Debian 的系统上设置 Kam1n0

  • 确保您安装了 Oracle 版本的 Java 11。(而不是 apt 中的 default-jdk。)

    • 添加 Oracle 的 PPA,然后更新您的包仓库:sudo add-apt-repository ppa:webupd8team/java
      • 如果遇到任何错误(例如 ~webupd8team not found),如果您在代理后面,请确保设置并导出 http_proxy 和 https_proxy 环境变量,然后使用 -E 选项重试 sudo 命令。另外,如果收到“add-apt repository command not found”错误,请尝试:sudo apt install -y software-properties-common。
    • 然后:sudo apt-get update,然后 sudo apt-get install oracle-java8-installer
      • 使用 java -version 验证 Java 版本;您可能需要手动设置 JAVA_HOME 环境变量(在 /etc/environment 中):JAVA_HOME=/usr/lib/jvm/java-11-oracle
  • 从 Kam1n0-Community 下载适用于 Linux 的最新版本(Kam1n0-IDA-Plugin.tar.gz 和 Kam1n0-Server.tar.gz)。

向后兼容性

旧版本(<2.0.0)中使用的汇编代码仓库和配置文件不再受最新版本支持。如果您需要迁移旧仓库,请联系我们。

文档

  • Kam1n0 服务器教程
    • 配置与引擎启动
    • 注册账号并登录
    • 创建应用
    • 应用共享与访问控制
    • 准备数据
    • 用于 IDA Pro 插件的应用 URL
    • 索引二进制文件
    • 使用汇编函数进行搜索
      • 流程图形视图
      • 文本差异视图
      • 克隆组视图
    • 使用二进制文件进行搜索
    • 浏览克隆搜索结果
      • 摘要框
      • 详细信息

开发

克隆最新的稳定分支(不要忘记 --recursive!):```bash git clone --recursive -b master2.x --single-branch https://github.com/McGill-DMaS/Kam1n0-Community

root@kitploit:~
## 导入项目。
IntelliJ:将根目录 /kam1n0/kam1n0/ 作为 maven 项目导入。所有子模块将相应加载。
EclipseEE:将克隆的 git 仓库添加到 git 视图。从 git 仓库导入所有 maven 项目。
你可能需要修改 classpath 以解决任何错误。
所有资源路径在 IDE 内运行时动态修改
(通过 kam1n0-resources 子模块)。

构建项目:```
cd /kam1n0/kam1n0
mvn -DskipTests clean package
mvn -DskipTests package

生成的二进制文件可在 /kam1n0/build-bins/ 中找到。

要运行测试代码,首先需要从 http://chromedriver.chromium.org/ 下载 chromedriver.exe,并将其绝对路径添加到名为 webdriver.chrome.driver 的环境变量中。系统还需安装Chrome浏览器。测试代码将启动一个浏览器实例来测试UI界面。完整的测试过程大约需要3小时。``` cd /kam1n0/kam1n0 mvn -DskipTests clean package # you can skip this one if you already built the package mvn -DskipTests package # you can skip this one if you already built the package mvn -DforkMode=never test

root@kitploit:~
这些命令仅编译 Java,并附带预编译的 libvex 和 z3 wheels。可直接开箱使用。  
libvex 和 z3 的构建依赖于平台。我们使用了 Angr 的 libvex 分支。  
更完善的构建脚本以及适用于 Windows/Linux 的安装程序可以在 /kam1n0-builds/ 下找到。  

* kam1n0:服务端源代码。  
* kam1n0-builds:安装程序源代码及构建发行版的脚本。  
* kam1n0-clients:客户端源代码。  

## 二进制发行版  

我们有一个用于持续开发与交付的 Jenkins 服务器。最新的稳定版将在此处发布。我们会定期将内部实验分支与此仓库同步。  

## 许可协议  

本软件由 [Steven H. H. Ding](http://stevending.net/)、[Miles Q. Li](http://milesqli.github.io/) 和 [Benjamin C. M. Fung](http://dmas.lab.mcgill.ca/fung/) 在加拿大 [McGill 数据挖掘与安全实验室](http://dmas.lab.mcgill.ca/) 和 [Queen's L1NNA 研究实验室](https://l1nna.com/) 开发。基于 Apache License 2.0 版本分发。详情请参阅 [LICENSE.txt](https://github.com/mcgill-dmas/kam1n0-community/blob/master2.x/LICENSE.txt)。  

版权所有 2014-2021 McGill 大学及研究人员。保留所有权利。  

## 致谢  

![image](https://img.shields.io/badge/Proudly%20Funded%20by-Defence%20Research%20&%20Development%20Canada%20(DRDC)-orange.svg?style=for-the-badge)  

![image](https://img.shields.io/badge/Proudly%20Funded%20by-NSERC%20Canada%20Research%20%20Chairs%20Program-blue.svg?style=for-the-badge)  

![image](https://img.shields.io/badge/Special%20thanks%20to-Philippe%20Charland,%20DRDC-orange.svg?style=for-the-badge)  

![image](https://img.shields.io/badge/Acknowledgement-NVIDIA%20Corporation%20for%20donating%20the%20Titan%20Xp%20used%20for%20this%20research-blue.svg?style=for-the-badge)  

![image](https://img.shields.io/badge/Built%20in-Data%20Mining%20and%20Security%20Lab,%20SIS,%20McGill%20Univrsity-red.svg?style=for-the-badge)  

![image](https://img.shields.io/badge/Built%20in-L1NNA%20Research%20Laboratory,%20CS,%20Queen%27s%20Univrsity-red.svg?style=for-the-badge)
下载工具
安装程序包含组件描述
Kam1n0-Server.msi核心引擎提供索引和搜索服务的主引擎。
工作台用于管理仓库和运行服务的用户界面。
Web 用户界面用于搜索/索引二进制文件和汇编函数的 Web 用户界面。
用于 VS 15 的 Visual C++ 可再发行组件z3 的依赖项。
Kam1n0-IDA-Plugin.msi插件连接器和用户界面。
Cefpython 的 PyPI 包用户界面的渲染引擎。
PyPI 及相关包Python 的包管理。随附于 IDA 6.8 和 6.9。
  • 解压两个 tarball(即 tar –xvzf Kam1n0-IDA-Plugin.tar.gz 和 tar –xvzf Kam1n0-Server.tar.gz)

  • Kam1n0-Server.tar.gz 文件将创建 server 目录。

  • 在 server 目录中,您应该看到一个名为 kam1n0.properties 的文件,您将在其中设置 Kam1n0 的各种配置;这非常重要。

  • 将 kam1n0.data.path 设置为您希望写入 Kam1n0 相关数据的位置。我们选择将其放在存放 server 的同一位置。kam1n0.ida.home 指的是您的 IDA 安装位置。如果您没有 IDA 并且不打算使用 Kam1n0 进行反汇编,请注释掉这一行(以及以下 kam1n0.ida.batch 行)。有关 kam1n0.properties 文件的更多(准确)信息,请参阅 kam1n0.properties.explained 文件。

  • 运行 Kam1n0 服务器工作台:java -jar kam1n0-server-workbench.jar。应该会弹出一个窗口,提示您实际启动 Kam1n0。或者,运行 Kam1n0 服务器:java -jar kam1n0-server.jar --start。这将在控制台中启动服务器,不显示窗口。

  • 要连接和使用,请在浏览器中访问 127.0.0.1:8571(Kam1n0 默认监听的端口应为 8571,但可以在 kam1n0.properties 中更改)。您应该会看到漂亮的 Kam1n0 Web 界面。然后,如果您不知道如何使用 Kam1n0,请按照 Kam1n0-Community 仓库中的教程操作。

  • IDA Pro 插件教程
    • 功能
    • 示例演练
      • 准备数据
      • 引擎启动与应用 URL
      • 连接配置
      • 从插件进行索引
      • 函数搜索
      • 组成分析
      • 汇编片段搜索
      • 搜索框
    • 插件如何工作
      • 用户界面
      • 同步
      • 双向通信