Polypyus
Polypyus支持从相似的二进制文件中提取出已知函数,并以此来学习如何再原始二进制文件中定位函数。该工具是一个固件源码分析工具,它不需要对二进制文件进行反汇编,这就是它的一个很大的优势,因为有些二进制文件的反汇编是比较困难的。除此之外,该工具仅对二进制源码进行分析,因此它的执行速度非常快,在几秒钟之内即可完成。但是,该工具所使用的方法要求二进制文件使用相同的体系结构,并且具有类似的编译器选项。
Polypyus支持集成到现有工具的工作流中,比如说Ghidra、IDA、BinDiff和Diaphora等等。比如说,它可以导入以前注释过的函数并从中学习,还可以导出要导入到IDA中寻找的函数。由于Polypyus使用了相当严格的阈值,所以它只能在我们的实验中找到正确的匹配。
在处理原始固件二进制文件(即各种Broadcom和Cypress Bluetooth固件版本)时,我们发现IDA自动分析经常错误地启动已识别的函数。在IDA Pro 6.8中,自动分析更具攻击性,会导致更多的结果,但也会导致更多的误报。而IDA Pro 7.2就更惨了,因为它会遗漏很多函数。
工具运行机制
Polypyus能够通过比较带注释的固件二进制文件数据集中的常见函数来创建二进制模糊匹配模块。当前版本的Polypyus支持下