一个好的 C 语言反编译器是什么?

89

我正在寻找一款用于反编译C程序的工具。这个二进制文件是一个32位x86 Linux可执行文件。Objdump可以正常工作,所以我正在寻找一些能够尝试从汇编代码中重建C源代码的工具。


3
也许在以下网站上询问会更好?http://softwarerecs.stackexchange.com/,http://reverseengineering.stackexchange.com/ - phuclv
3
没有。根据该过程的定义,没有反编译器是好的。 - Martin James
5个回答

59

同意使用Hex-rays,但如果你无法证明这个开销的必要性,Boomerang 或许也能够胜任。


4
我用一些Windows二进制文件进行了测试,Boomerang只反编译了一个小的文件。其他的则导致了该反编译器崩溃。 - Jader Dias
4
Qt 的库依赖关系真是够麻烦的,不仅包括核心和图形界面,还有开发工具包。需要考虑这一点。 - Mustafa
@CodyBrocious:他要求Linux程序。 - user2284570
但请注意,Boomerang无法反编译AMD x86_64二进制文件... - recolic

19

有关这个案例,有什么想法吗? - user2284570
Hopper许可证的成本只有一小部分,而且基本上做得很好/相当。 - Rui F Ribeiro

11

虽然IDA非常有帮助,但它的费用相当高。 不确定您的具体用例,但Plasma似乎可以胜任,“Plasma是适用于x86 / ARM / MIPS的交互式反汇编器。它可以生成带有彩色语法缩进的伪代码。”

如果您正在寻找更类似于IDA的东西,我强烈推荐Radare2。还有ODA在线反汇编器,以防您不想安装任何东西。

一个新的选择是Binary Ninja,尽管它远远没有IDA或Radare的能力,但对于初学者来说,它是一款便宜且好用的实用工具。

更新: 自这条评论以来,NSA发布了Ghidra,它完全开源和免费。它是一个完整的RE框架,并具有高端反编译器。


9

对于二进制反编译,我已经购买了Hopper的个人许可证https://www.hopperapp.com

它的优点是:

  • 具有直观和精心设计的图形界面;
  • 在MacOS和Linux上运行;
  • 提供合理的类C反编译器输出;
  • 反编译32位64位二进制文件;
  • 支持Mach-O二进制文件(Mac和iOS)、PE32/32+/64 Windows二进制文件和ELF二进制文件;
  • 定期免费更新;
  • 许可证价格约为100美元,无人能敌。

在我看来,成本/质量比很容易打败IDA/Hex-rays,并且它也远远领先于其他商业(或免费)的反编译器。

此外,您可以尝试使用演示版本免费反编译(非常)小的可执行文件,以便了解其情况。

Hopper

从现在开始(2019年3月起),你还可以选择NSA提供的Ghidra作为替代工具。只要安装了JDK 11,Ghidra就可以在Linux、Mac和Windows上运行。它被称为“与X/Rays相当的免费工具”。

Ghidra

Ghidra的功能更加强大,但Hopper似乎更加直观。

另请参阅:PepperMalware博客-使用NSA的Ghidra SRE框架快速分析Trickbot样本


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接