前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kam1n0:一款功能强大的汇编代码管理和分析平台

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

作者头像
FB客服
发布2022-11-14 16:02:54
6220
发布2022-11-14 16:02:54
举报
文章被收录于专栏:FreeBufFreeBuf

关于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/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于Kam1n0
    • Asm-Clone
      • Sym1n0
        • Asm2Vec
          • 可执行程序分类
          • 平台概览
          • 工具安装
          • (向右滑动,查看更多)
            • Kam1n0服务器安装
              • Kam1n0 IDA Pro插件安装
              • 自定义开发
              • (向右滑动,查看更多)
                • 导入项目
                • 许可证协议
                • 项目地址
                • 参考资料:
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档