这是我所见过的专门针对i86的文件。是否有跨架构模块化的产品?
#1 楼
Roberto Paleari,Lorenzo Martignoni,Giampaolo Fresi Roglia和Danilo Bruschi发表了一篇名为“ N版本拆卸:x86拆卸器的差异测试”(PDF)的论文,以正式方式比较了几个x86拆卸器。引用论文摘要:
反汇编程序的输出用于许多不同的目的
(例如,调试和逆向工程)。因此,反汇编程序表示一长串阶段的第一个链接,而任何
机器代码的高级分析都依赖于此。在本文中,我们
证明了许多反汇编程序无法解码某些
指令,因此该链的第一个链接非常弱。我们
提出一种称为N版本反汇编的方法,以基于差异分析来验证反汇编程序的正确性
不知道这是否与主题无关您的问题,但您可能会感兴趣。
评论
有趣的纸!这并不是一个完全令人惊讶的结论。 Godefroid和Taly拥有MSR TR(research.microsoft.com/apps/pubs/default.aspx?id=156020),在该处,他们可以自动执行指令合成,并在手动指定的语义中发现错误。
–安德鲁(Andrew)
13年3月20日在16:39
#2 楼
在我读过的许多论文中,反编译工具作者使用SPEC基准来衡量其反编译器的有效性。从指令解码到控制流恢复,这可以从整体上了解系统的运行状况。这些基准不是免费或开源的。GCC和clang编译器还附带测试基准。这些可能值得研究。
此外,Regehr的csmith项目可以生成任意C程序用于编译器测试/模糊测试。这对于测试反编译器和二进制分析系统可能有用?
评论
FWIW我们确实使用cmith来测试Hex-Rays反编译器,它确实有帮助。
–伊戈尔·斯科钦斯基♦
13年3月20日在17:04
#3 楼
链接到的气体测试用例套件不仅适用于i386。父目录包含用于x86-64,arm,alpha和许多其他体系结构的测试用例。#4 楼
我制作了一个包含所有x86操作码(当时)和许多编码形式的文件,这有助于我积极地发现许多反汇编程序(IDA,Hiew,BeaEngine,OllyDbg,XED,hte等)中的许多错误,尤其是鲜为人知的形式和没有证件的文件。(可能有点题外话-不是现成的测试套件)
评论
您是否为所有文件都提交了错误?他们固定了吗?
– Janus Troelsen
13年5月1日在20:01
我做到了,他们做到了。
–天使
13年5月1日在20:16
评论
当您说“反汇编程序的正确性”时,是指指令解码器的正确性,还是对控制流程图恢复和其他高级语义信息有正确的理解?好吧,哪个是更有趣的问题?我猜是稍后的正确流程图恢复...