是否可以将PPC组件转换为C?

时间:2010-12-04 01:09:39

标签: assembly reverse-engineering decompiling powerpc

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

4 个答案:

答案 0 :(得分:1)

是和否。

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

如果现有代码确实是编译的结果而没有太多巧妙的优化,那么很可能一个相当死记硬背的过程可以将其转回C.对于少量代码,这通常很容易手动完成,但是对于大型代码库而言,这很乏味且容易出错。

在野外有一些反向工程工具可以声称反编译。在一般情况下,这不是一个容易的问题。

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

无论采用哪种方法,对现有二进制文件都有一个好的测试套件(以及运行它的能力)可能是至关重要的,这样你就可以证明翻译是等价的。

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

答案 1 :(得分:1)

IDA Pro 6.95包括PPC反编译器。 但它有点累积(2350美元)

答案 2 :(得分:0)

Boomerang声称支持PPC反编译。

答案 3 :(得分:0)

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

这是来自飞旋镖项目:

  

但是,一般的反编译器不会尝试反转反编译器的每个动作,而是反复转换输入程序,直到结果是高级源代码。因此不会重新创建原始源文件; 可能不喜欢它。

因此它会创建一些可能(但永远不会知道)C源代码的C代码。