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

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

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

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

工具目录

分类

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

Kam1n0-Community

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

查看仓库
627124233年前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-Server.msi 核心引擎 提供索引和搜索服务的主引擎。
工作台 用于管理仓库和运行服务的用户界面。
Web 用户界面 用于搜索/索引二进制文件和汇编函数的 Web 用户界面。
用于 VS 15 的 Visual C++ 可再发行组件 z3 的依赖项。
Kam1n0-IDA-Plugin.msi 插件 连接器和用户界面。
Cefpython 的 PyPI 包 用户界面的渲染引擎。
PyPI 及相关包 Python 的包管理。随附于 IDA 6.8 和 6.9。

安装 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
下载工具