2010-12-04 49 views
1

我有一些PPC代码,我想转换回它的原始C代码,有没有办法做到这一点?可能是一个人(比如知道PPC重建C代码的人)或程序?是否可以将PPC程序集转换为C?

+0

PPC和PowerPC一样吗? – ruslik 2010-12-04 01:11:48

+0

是的,PowerPC组件。 – user330416 2010-12-04 01:12:22

+5

由于编译为机器代码是一个有损耗的过程,因此无法获取*原始* C。没有1对1的对应关系。然而,Power的反汇编/反编译器不在我的专业范围之内。 – SingleNegationElimination 2010-12-04 01:14:58

回答

1

是的,没有。

原则上可以将任何语言的程序翻译成任何其他语言。结果不会很漂亮。

如果现有的代码真的是编译的结果,没有太多的巧妙的优化,那么很可能是一个相当死板的过程可以把它转回到C.这往往是直接手工处理少量的代码,但对于大型代码库来说却很乏味且容易出错。

有一些逆向工程工具在野外有关反编译的声明。在一般情况下,这不是一个简单的问题。

使问题自动化的一种方法是为已经支持C语言后端的编译器创建PPC汇编(甚至二进制)前端。其结果是一个交叉编译器读取PPC代码并产生高度混淆的C代码。例如,我知道GCC有一个C后端。

无论您采取什么方法,对于现有二进制文件,您都有一个良好的测试套件(以及运行它的能力)可能很关键,这样您就可以证明翻译是等同的。

编辑:请注意,您将永远不会收到原始评论,并且只能访问使其成为符号表或类似调试信息的原始变量和函数名称。

0

不可以。反编译与获取c不同。你永远无法得到c回来。您可以尝试对其进行逆向工程,试图了解它在做什么,但是一些信息会永久丢失。

这是自食其果项目:

然而,一般的反编译器不会试图扭转反编译的每一个动作,而是反复地将输入程序,直到结果是高层次的源代码。因此不会重新创建原始源文件; 可能没什么喜欢它。

所以产生了一些C代码可能是(但永远不会知道)C源代码。

相关问题