我正在寻找一款用于反编译C程序的工具。这个二进制文件是一个32位x86 Linux可执行文件。Objdump可以正常工作,所以我正在寻找一些能够尝试从汇编代码中重建C源代码的工具。
我正在寻找一款用于反编译C程序的工具。这个二进制文件是一个32位x86 Linux可执行文件。Objdump可以正常工作,所以我正在寻找一些能够尝试从汇编代码中重建C源代码的工具。
同意使用Hex-rays,但如果你无法证明这个开销的必要性,Boomerang 或许也能够胜任。
虽然IDA非常有帮助,但它的费用相当高。 不确定您的具体用例,但Plasma似乎可以胜任,“Plasma是适用于x86 / ARM / MIPS的交互式反汇编器。它可以生成带有彩色语法缩进的伪代码。”
如果您正在寻找更类似于IDA的东西,我强烈推荐Radare2。还有ODA在线反汇编器,以防您不想安装任何东西。
一个新的选择是Binary Ninja,尽管它远远没有IDA或Radare的能力,但对于初学者来说,它是一款便宜且好用的实用工具。
更新: 自这条评论以来,NSA发布了Ghidra,它完全开源和免费。它是一个完整的RE框架,并具有高端反编译器。
对于二进制反编译,我已经购买了Hopper的个人许可证https://www.hopperapp.com。
它的优点是:
在我看来,成本/质量比很容易打败IDA/Hex-rays,并且它也远远领先于其他商业(或免费)的反编译器。
此外,您可以尝试使用演示版本免费反编译(非常)小的可执行文件,以便了解其情况。
从现在开始(2019年3月起),你还可以选择NSA提供的Ghidra作为替代工具。只要安装了JDK 11,Ghidra就可以在Linux、Mac和Windows上运行。它被称为“与X/Rays相当的免费工具”。
Ghidra的功能更加强大,但Hopper似乎更加直观。