用于完整二进制反汇编的开源库

逆向工程 拆卸 x86
2021-06-23 02:54:45

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

我的问题是,是否有任何开源库或项目使用比简单的直线反汇编(基于控制流或启发式)更好的技术?

我偶然发现了一篇使用机器学习方法的论文?这种方法有开源实现吗?

4个回答

Radare 2是 GPL 软件,具有良好的 API,并且没有使用线性反汇编。

参见可视模式(Vp 命令)示例: 示例 r2 x86 会话

我正在重新发布我为 perror 的问题而写的评论

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

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

Pyew 做递归遍历代码分析(解释在这里)。Pyew 它不会像线性扫描反汇编器那样被愚弄。无论如何,它不如IDA聪明。Pyew 是开源 (GPL),有时我什至会根据您的需要为其提供 LGPL 许可证。

PS:如果您正在寻找支持不是基于英特尔的任何东西的东西,并且您想要一些开源的东西,那么您真的需要查看radare

另一个可能感兴趣的开源库。

顶石引擎

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