x86反汇编的主要障碍之一是将代码与数据分离。与OllyDBG(显然使用控制流反汇编(使用CALL和JMP等操作码)或IDA(使用启发式和仿真方法))相比,所有可用的开源反汇编库仅执行直线反汇编(从顶部开始,将错误跳过1个字节)。 。但是这两个不是开源的。

我的问题是,有没有哪个开源的库或项目使用的技术比简单的直线反汇编(基于控制流或启发式)更好? br />
我偶然发现了使用机器学习方法的论文吗?是否有这种方法的开源实现?

评论

我不知道有任何开放源代码库,但是如果您想编写自己的库,请参见reverseengineering.stackexchange.com/questions/2347/…

#1 楼

Radare 2是一款GPL软件,具有良好的API,并且未使用线性分解。

请参见可视模式(Vp命令)示例:


评论


谢谢,您是否碰巧知道他们使用的反汇编方法的链接或文档?

– 3asm_
2014年1月13日上午10:13

@ 3asm_ Pancake和radare2团队的其余成员。具有“当您可以阅读源文件时,书写文档被高估”的理念。因此,请阅读源代码;)

– Stolas
2014年1月13日14:30

@Stolas:好吧,这听起来像Git文档给用户的胖胖“ ......”,它使用户尝试仅使用Git而无需先学习Gitology的十个学期。

– 0xC0000022L♦
2014年1月13日在16:06



@ 0xC0000022L不确定您是否侮辱我。但是radare2团队可以做到这一点是可以理解的。因为他们想花时间写代码而不是创建文档。另外,因为当他们完成了radare1的文档编制后,整个工作都进行了大修……我曾经以书本形式(例如奥莱利的动物书籍)开始自己编写文档,但这太繁琐了。

– Stolas
2014年1月13日在16:19

@ 0xC0000022L实际上,您可以对radare2命令使用内部帮助-只需键入“?”和/或“ <命令名称>”?

–安东·科赫科夫(Anton Kochkov)
2014年1月14日,11:27

#2 楼

我要重新发表我为perror问题写的评论

Lida(基于Bastard的libdisasm的工具),distorm和beaengine是一些使用递归反汇编的开源反汇编引擎。

评论


Distorm是线性反汇编AFAIK(用于多个项目时使用)

– NirIzr
17 Mar 9 '17 at 8:03



#3 楼

另一个选择是(对不起,垃圾邮件!)http://pyew.googlecode.com。这是用Python编写的静态分析器,主要用于恶意软件分析。根据您的需要,您可能会发现它很有用(它仅支持16、32和x64 Intel代码)。您可以使用Pyew的API编写自己的脚本(这里有一个更复杂的示例)。我使用(并使用了)进行大型恶意软件分析。确实,当我为他们工作时,Pyew正在分析所有VirusTotal流量。我们用它从一些昂贵的分析中丢弃了一些看起来很相似的样本。

Pyew进行递归遍历代码分析(在此进行解释)。 y,它不会像线性扫描反汇编程序那样被愚弄。无论如何,它并不像IDA那样聪明。 Pyew是开放源代码(GPL),有时我甚至会根据您的需求为其提供LGPL许可。

PS:如果您正在寻找一种支持不基于Intel的产品,并且想要某种开源的产品,那么您真的需要检查一下雷达。

评论


非常有见地的感谢,Python中的事实将对我的项目有很大帮助,非常感谢。

– 3asm_
2014年1月16日上午8:47

#4 楼



Capstone Engine

它支持多种架构,例如x86(+ AMD64),ARM,PowerPC和SPARC。

评论


顶点不是仅使用直线分解,而是更专注于支持多种体系结构吗?

– 3asm_
17 Mar 8 '17 at 14:09