是否有任何开源测试套件用于测试反汇编程序的性能?

逆向工程 工具 拆卸
2021-06-29 02:47:39

逆向工程的一个关键工具是一个好的反汇编器,那么为了确保一个反汇编器正常运行,有没有好的测试套件可用于测试一个反汇编器的正确性?这些架构是特定的,还是可以配置为跨多个对象架构工作?一个好的测试应该包括检查更晦涩的架构指令和格式错误的可移植执行文件。

这是我见过的一个专门针对 i86 的是否有跨架构的模块化?

4个回答

Roberto Paleari、Lorenzo Martignoni、Giampaolo Fresi Roglia 和 Danilo Bruschi 发表了一篇名为“ N 版本反汇编:x86 反汇编器的差异测试”(PDF)的论文,其中以正式方式比较了几种 x86 反汇编器。

引用论文摘要:

反汇编器的输出用于许多不同的目的(例如,调试和逆向工程)。因此,反汇编程序代表了机器代码的任何高级分析所依赖的一长串阶段的第一个环节。在本文中,我们证明了许多反汇编程序无法解码某些指令,因此链的第一个环节非常薄弱。我们提出了一种称为 N 版本反汇编的方法,以基于差异分析来验证反汇编程序的正确性

不确定这是否与您的问题略有不同,但您可能会感兴趣。

在我读过的很多论文中,反编译工具作者使用SPEC 基准来衡量他们的反编译器的有效性。这产生了系统工作情况的整体视图,从指令解码到控制流恢复。不过,这些基准测试不是免费的或开源的。

GCC 和 clang 编译器还附带了用于测试的基准。这些可能值得研究。

此外,Regehr 的csmith项目可以为编译器测试/模糊测试生成任意 C 程序。这可能对测试反编译器和二进制分析系统有用吗?

您链接到的 gas 测试用例套件不仅适用于 i386。父目录包含的x86-64,手臂,α,和许多其他架构的测试用例。

我做了一个文件,包含所有的x86操作码(当时)和多种编码形式,帮助我积极寻找在许多反汇编很多bug(IDA,邱博士,BeaEngine,OllyDbg的,XED,HTE ...),尤其是鲜为人知的形式和无证的。

(可能有点跑题——不是现成的测试套件)