Kam1n0能实现哪些功能?(1)

Kam1n0 v2.0的IDA Pro插件创建一个文件夹~/Kam1n0/来存储插件数据和错误。本教程首先介绍Kam1n0 v2.0基本功能的IDA Pro插件,然后通过简单的索引和搜索示例进行介绍。

功能性

带有插件的Kam1n0 v2.0引擎提供了索引和搜索程序集功能的功能。

图标功能性描述热键
搜索当前功能在当前地址搜索功能Ctrl + Shift + S
选择要搜索的功能选择要搜索的功能Ctrl + Shift + A
索引当前函数在当前地址索引功能Ctrl + Shift + K
选择要编制索引的函数选择要编制索引的函数Ctrl + Shift + J
没找到图标成分分析用二进制文件搜索不适用
管理连接管理与不同存储库的连接不适用
管理储存空间管理本地/远程帐户和存储不适用
没找到图标片段搜索(新)搜索选定的程序集片段不适用
  •  

即使您可以从IDA Pro Functions Window到搜索/索引功能的弹出菜单中选择功能,也可以使用和在其他位置(例如工具栏)打开Selection Window,它为多次搜索提供了更详细的配置。

例如,您可以应用不同的过滤器,然后选择要用于搜索/索引它们的连接。

通过示例

让我们使用引擎和插件进行简单的索引和搜索案例。

准备数据

假设我们有两个libpng-1.7.0b54.dll来自libpng和 zlib-1.2.7.dllzlib的二进制文件。这两个文件包含在我们的发行文件中Example.zip。我们建议您先尝试使用它们,以与以下描述保持一致。您可以稍后根据需要索引其他二进制文件。我们尝试为第一个二进制文件建立索引,libpng-1.7.0b54.dllzlib-1.2.7.dll针对它搜索第二个二进制文件。

启动引擎并获取IDA Pro插件的URL

在此步骤中,您应该启动Kam1n0引擎,并通过右键单击它并选择“复制链接地址”,从要使用的APP的主页中获取IDA Pro插件的URL。

 

建立连接

打开IDA Pro,然后单击Manage Connection Button工具栏中的。现在,您可以查看和编辑插件的连接。在表格中填写IDA Pro插件的URL,用户名,密码,然后单击Update/Add ButtonOK

 

索引编制

要仅索引某些功能,请单击Select Functions to Index Button工具栏上的(或上述其他位置)。选择要索引的功能,然后单击Continue Button。每个索引的二进制文件均由其路径唯一标识,每个索引的函数均由其二进制ID和起始地址唯一标识。

 

嵌入式铬浏览器将弹出并显示索引编制进度。它具有与Kam1n0 Web界面相同的UI集。您可以离开页面或通过页面监视进度。

 

功能搜索

打开IDA Pro并zlib-1.2.7.dll照常反汇编目标二进制文件。单击Select Functions to Search Button工具栏中的。假设我们要搜索alder32compress2函数。使用ctrl选择它们,然后在列表中单击。点击Continue Button

 

嵌入式铬浏览器将弹出并显示搜索进度,完成后将重定向到结果页面。与Kam1n0 Web UI相似,对于每个检索到的功能,您都可以通过单击相应的图标来查看相似性,流程图比较,全文对齐,克隆组对齐。您也可以通过单击右侧的克隆图来查看它。它具有与Kam1n0 Web界面相同的UI集,除了这里具有附加的流程图链接功能。

 

用户可以从克隆搜索结果呈现视图中的基本框跳到IDA视图A中的相应基本块。克隆列表视图和任何流程图视图均提供此功能。

 

在任何与“流程图”相关的视图中,如果双击图中的特定基本块,则IDA View-A将跳至文本或图形中的同一基本块。在所有克隆列表视图中,如果右键单击上下文菜单到树中的查询节点,则可以在IDA View-A中看到该选项跳转到相应的汇编功能。

成分分析

要搜索二进制文件的所有功能并将结果保存在将显示在服务器主页上的文件中,请单击Composition Analysis工具栏中的。嵌入式铬浏览器将弹出并显示分析进度。您可以离开页面或通过页面监视进度。

 

您可以稍后在主页中以与使用Web UI相同的方式找到成分分析的结果。

 

 

程序集片段搜索

 

从版本1.xx开始,支持IDA Pro中的程序集片段搜索。您只需选择几行汇编代码,然后右键单击它即可弹出菜单。选择条目Query fragment。嵌入式铬浏览器将弹出并显示搜索进度,完成后将重定向到结果页面。结果页面类似于函数搜索的结果。

 

搜索框

有一个搜索框可帮助您在嵌入式铬浏览器的网页上快速找到所需信息。搜索框隐藏在每个网页的右侧。如果用户按下control+F或单击,它可以被激活并滑出search icon。键入要搜索的关键字并按键后Enter,可以在网页上循环搜索结果。通过按下ESC键,一个将清除搜索文本框以及所有突出显示的搜索结果。

 

插件如何工作

该插件是使用Python编写的idaapi。在原始的Kam1n0 IDA插件中,IDA Pro和克隆搜索结果呈现窗口之间是单向通信。用户在IDA视图中发送克隆搜索请求后,插件将创建一个新的IDA表单来处理该请求,并创建一个新的结果呈现窗口过程。如果查询包含多个汇编函数,则IDA表单将搜索它们中的每个并合并搜索结果。在此过程中,IDA Pro窗口被冻结,并且用户无法使用它,直到搜索完成(如下图所示)。

 

在更新的Kam1n0 v2.x IDA插件中,我们删除了原始IDA表单进行搜索,并采用了基于Web的界面来逐步搜索和合并克隆结果。搜索操作是使用插件过程进行的。因此,主IDA Pro进程不会被阻止。在进行克隆搜索时,用户仍可以使用其他IDA窗口。

在原始的IDA Pro插件中,无法在渲染窗口中调用IDA SDK函数。我们在IDA Pro流程和插件流程之间引入了双向消息通信通道。在插件过程中,可以使用JavaScript或Python执行任何IDA命令。命令被推送到这两个进程之间的共享消息队列中。在IDA Pro流程中,我们创建一个消息侦听器,该消息侦听器监视队列并执行所有请求的命令。由于multiprocessingPython中的原始模块无法在IDA Pro或其他Python嵌入式应用程序中运行,因此我们实现了一个简单的通信渠道。这样的设计使克隆搜索结果呈现过程与IDA Pro UI过程之间可以进行交互。

用户界面

用户界面包括两部分:

  • 本机idaapi表单和控件:“连接管理”表单,“选择要搜索的功能”表单和“选择要索引的功能”表单。
  • 与IDA Pro的Kam1n0 v1.x插件不同,新插件直接使用Kam1n0服务器上的网页。它们共享同一组UI,以实现更好的代码可维护性。

同步化

我们发现很难使用异步更新IDA Pro UI idaapi。如果在用户与界面交互(例如单击)时除主线程以外的其他线程更新了界面,则IDA Pro将冻结/崩溃。相反,我们创建了一个新过程来呈现克隆搜索结果。向后通信通过进程间通信实现。用户仍然可以在整个搜索和渲染过程中使用IDA Pro。

通讯

为了与Kam1n0 Web服务进行交互,我们使用urllibPython内置的内置网络包装程序来发送请求,并使用jsonlib来解析json结果。该连接本身可以是其他反汇编程序的插件的独立客户端。一个人仅需要在IDAUtils中为其他反汇编程序实现反汇编提取实用程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
A paper published in 2016. ABSTRACT Assembly code analysis is one of the critical processes for detecting and proving software plagiarism and software patent infringements when the source code is unavailable. It is also a common practice to discover exploits and vulnerabilities in existing software. However, it is a manually intensive and time-consuming process even for experienced reverse engineers. An effective and efficient assembly code clone search engine can greatly reduce the effort of this process, since it can identify the cloned parts that have been previously analyzed. The assembly code clone search problem belongs to the field of software engineering. However, it strongly depends on practical nearest neighbor search techniques in data mining and databases. By closely collaborating with reverse engineers and Defence Research and Development Canada (DRDC ), we study the concerns and challenges that make existing assembly code clone approaches not practically applicable from the perspective of data mining. We propose a new variant of LSH scheme and incorporate it with graph matching to address these challenges. We implement an integrated assembly clone search engine called Kam1n0. It is the first clone search engine that can efficiently identify the given query assembly function’s subgraph clones from a large assembly code repository. Kam1n0 is built upon the Apache Spark computation framework and Cassandra-like key-value distributed storage. A deployed demo system is publicly available.1 Extensive experimental results suggest that Kam1n0 is accurate, efficient, and scalable for handling large volume of assembly code.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值