Kam1n0:一款功能强大的汇编代码管理和分析平台

2022-11-14 16:02:54 浏览数 (1)

关于Kam1n0

Kam1n0是一款功能强大且易于扩展的汇编代码管理和分析平台,该工具允许用户将一个大型二进制文件集合索引到不同的存储库中,然后它会给广大研究人员提供各种不同的分析服务,例如克隆搜索和分类等等。该工具引入了应用程序的实现概念,并支持对汇编代码库的多租户访问和管理。考虑到逆向工程任务的多功能性,Kam1n0的服务器目前提供了三种不同类型的克隆搜索工具:Asm-Clone、Sym1n0和Asm2Vec。

其中,用户可以创建多个应用程序实例,应用程序实例可以在特定的用户组之间共享,应用程序存储库的读写访问和开关状态可以由应用程序所有者控制,而Kam1n0的服务器可以使用多个共享资源池同时为应用程序提供服务。

Asm-Clone

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

Sym1n0

Sym1n0支持通过区分模糊测试和约束求解进行语义克隆搜索,而这是一种高效、可扩展的动态静态混合方法(平均查询时间<1s,平均索引时间<100ms,1.5M函数)。给定一个目标函数(如下图所示左侧的函数),它可以在存储库中的其他函数(如图所示右侧的函数)中标识克隆的子图,并且支持抽象语法图的可视化:

Asm2Vec

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

可执行程序分类

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

平台概览

下图显示了Kam1n0的主要UI组件和功能:

工具安装

广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript复制
git clone https://github.com/McGill-DMaS/Kam1n0-Community.git

(向右滑动,查看更多)

或直接访问该项目的Releases页面下载Kam1n0。

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

Kam1n0服务器安装

Kam1n0的核心引擎使用纯Java开发,并需要下列依赖组件:

1、最新版本11.x JRE/JDK x64发行版; 2、最新版本IDA Pro,并安装好idapython插件;

Kam1n0 IDA Pro插件安装

Kam1n0 IDA Pro插件基于Python开发,主要使用下列依赖组件:

IDA Pro > v6.7,且安装好idapython插件

自定义开发

使用下列命令克隆最新稳定版分支:

代码语言:javascript复制
git clone --recursive -b master2.x --single-branch https://github.com/McGill-DMaS/Kam1n0-Community

(向右滑动,查看更多)

导入项目

在IntelliJ中,将/kam1n0/kam1n0/以Maven项目导入,接下来使用下列命令构建项目:

代码语言:javascript复制
cd /kam1n0/kam1n0
mvn -DskipTests clean package
mvn -DskipTests package

接下来,可以使用下列命令进行测试:

代码语言:javascript复制
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
(向右滑动,查看更多)

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

Kam1n0:https://github.com/McGill-DMaS/Kam1n0-Community

参考资料:

http://stevending.net/ http://milesqli.github.io/ http://dmas.lab.mcgill.ca/fung/ http://dmas.lab.mcgill.ca/ https://hex-rays.com/contests/2015/ https://drive.google.com/file/d/0BzRSjM7kjy-rZWUtRnFXR0ZpSjg/view?usp=sharing http://www.oracle.com/technetwork/java/javase/downloads/index.html https://github.com/idapython/src/

0 人点赞