我有一些 PPC 代码,我想将其转换回其原始 C 代码,有没有办法做到这一点?可能是一个人(比如知道 PPC 来重构 C 代码的人?)或一个程序?
4 回答
是和不是。
原则上可以将任何语言的程序翻译成任何其他语言。结果不会很漂亮。
如果现有代码确实是没有太多巧妙优化的编译结果,那么很可能一个相当死记硬背的过程可以将其转回 C。对于少量代码,这通常很容易手动完成,但乏味且繁琐大型代码库容易出错。
在野外有一些逆向工程工具声称反编译。在一般情况下,这不是一个容易的问题。
使问题自动化的一种方法是为已经支持 C 语言后端的编译器创建 PPC 程序集(甚至二进制)前端。结果是一个交叉编译器,它读取 PPC 代码并生成高度混淆的 C 代码。例如,我知道 GCC 有一个 C 后端。
无论您采用何种方法,对于现有二进制文件而言,拥有一个良好的测试套件(以及运行它的能力)可能至关重要,这样您就可以证明翻译是等效的。
编辑: 请注意,您将永远无法取回原始注释,并且只能访问将其放入符号表或类似调试信息的原始变量和函数名称。
IDA Pro 6.95包括 PPC 反编译器。但它有点贵(2350 美元)
Boomerang声称支持 PPC 反编译。
不,从来没有。反编译和取回 c 是不一样的。你永远无法取回c。您可以尝试对其进行逆向工程,尝试了解它在做什么,但某些信息会永久丢失。
这是来自回旋镖项目:
然而,一般的反编译器并不试图反转反编译器的每一个动作,而是反复转换输入程序,直到结果是高级源代码。因此它不会重新创建原始源文件;可能没有什么喜欢的。
因此,它创建了一些可能(但永远不会知道)C 源代码的 C 代码。