支持从相似的二进制文件中提取出已知函数的共性
温馨提示:这篇文章已超过550天没有更新,请注意相关的内容是否还可用!
支持从相同的二进制文件中提取出已知变量,并借此来学习怎样再原始二进制文件中定位函数。该软件是一个固件源码分析软件,它不应该对二进制文件进行反汇编,这就是它的一个巨大的优势,因为有些二进制文件的反汇编是非常困难的。除此之外,该软件仅对二进制源码进行预测,因此它的执行速度相当快,在几分钟之内就能完成。但是,该软件所使用的方式规定二进制文件使用同样的机制结构,并且带有类似的编译器选项。
支持集成到现有软件的工作流中,比如说、IDA、和之类。比如说,它可以导入当时注释过的函数并从学校习,还可以导出要导入到IDA中寻求的函数。由于使用了非常严格的阈值,所以它没法在我们的实验中找到恰当的匹配。
在处理原始固件二进制文件(即诸多和固件版本)时,我们看到IDA自动分析一直错误地推进已识别的函数。在IDAPro6.8中,自动分析更具伤害性,会造成更多的结果,但也会造成更多的误报。而IDAPro7.2就更惨了,因为它会遗漏这些函数。
工具运行机制
无法通过非常带注解的固件二字节文件数据集中的常用变量来建立二进制模糊匹配模块。当前版本的支持以下注解:
WICEDpatch.elf文件,这是一种特殊的ELF文件,其中仅包括符号定义;
.文件,即大多数ARM编译器支持生成的文件;
.csv文件,带有格式化样本数据;
这种注释包含已知变量的地址、大小和名称。历史记录数据集中输入二进制文件的共性越多,的性能和结果就越好。给定几个稍有不同的函数,就可以构建更加好的匹配器。
工具安装
要求3.6及其更高版本的环境,我们建议你们使用一个虚拟环境来执行软件的安装。
首先,使用以下命令将该项目源码克隆至本地:
git clone https://github.com/seemoo-lab/polypyus.git
接下俩,切换到项目目录下,执行以下命令:
pip install .
工具运行
工具安装完成以后,我们可以使用以下命令来运行该软件:
polypyus-gui
polypyus-cli
的使用
我们可以借助图形化界面或命令行接口来使用,分别对应的是-gui和-cli这两条命令,并且他们都支持以下调用参数:
--verbose is the verbosity level. By default, it shows warnings -v shows info -vv show debug information.
--project sets the location of the project file. This is either a file path or ":memory:".
--help Show help message.
图形化界面使用
通常的图形化界面工作流都是从视窗的右手边向右手边操作的。首先,需要将二进制源码添加到历史记录中。接下去,工具会添加符号注释,并添加目标源码。如需获得匹配函数,可以单击“from”。匹配器建立完成以后php源码分析工具,我们就可以选择单个目标了,或者借助选择“batchmatch”来匹配所有的目标代码。最后,所有的结果数据都将存储在一个.csv文件中。
在以下这个演示视频中,我们可以看见只应该几秒钟php源码分析工具,即可从两份输入代码中完成学习过程、注释代码、创建匹配器,并将匹配函数应用到新的代码中。
视频地址:
命令行接口使用
使用命令行接口的用处就是它无法手动化执行任务。目前来说,命令行接口的数据输出格式可能会因版本差异而颠覆。下面给出的是一个调用实例:
polypyus-cli --history examples/history/20819-A1.bin --annotation examples/history/20819-A1_patch.elf --history examples/history/20735B1.bin --annotation examples/history/20735B1_patch.elf --project test.sqlite
polypyus-cli --target examples/history/20739B1.bin --project test.sqlite
许可证协议
本项目的研发与公布遵循GPLv3开源许可证协议。
项目地址
:
本文来自网络,如有侵权请联系网站客服进行删除
还没有评论,来说两句吧...