flash decompiler使用手记

传说有一种非常强大的大杀器,能够把任意的SWF文件反编译成源文件。自此程序员的工作暴露无遗
我听说这种东西的时候感觉也是非常的新奇,自己从理论上分析了一把,觉得似乎也无可厚非:例如将EXE文件反编译成C代码,绝对可以。只不过一般的人完全看不懂而已,而对于那些能够看懂的当然会很不屑这种东西。 只是没有想到EXE的反编译 和SWF的反编译还是差别很大的,不过转念一想觉得这也是情理之中的事情:EXE(二进制文件)里面包含的是机器码,是最最最底层的代码,编译的时候名字会粉碎,并且最终全部转变成没有太大意义的0和1. 而AS是一种解释型的语言,在SWF里面保存的是中间代码,这种中间代码可强可弱。不过从反编译的结果来看,AS的中间代码还是比较弱的,从反编译生成的文件结果来看,所有类的名字得以保存,但是函数过程里的中间变量名字全部被粉碎
我想大部分的人看见那些未被粉碎的类名,兴奋程度肯定盖过了看见那些被粉碎的中间变量,于是觉得F D这玩意儿,好使,绝对的好使。--我也是这样的。
不同的是,以前我也就看着那些被粉碎的名字YY一把,怎么修改能够得到自己想要的效果。而昨天我就亲自动手修改了一把,显然不像我想的那样。

Flash Decompiler 只能反编译出源程序的框架,然而对反编译的程序进行编译,你不能得到目标SWF,这个过程中间会产生很多的错误和异常,对于小型的程序,你当然可以一个个的去修复这些潜在的错误和异常,但是对于而今动则上百个类的程序来说,你真的是有心无力--或者说--至少我是这样的 (这是我个人的使用心得,如果有人有好的见解,一定要告诉我,THANKS)

我的过程是这样的,对一个现有的SWF尝试进行反编译,F D很强大,能够判断出这是由一个FLEX的编译器生成的SWF文件,并能将其反编译成flex项目,而且使用flexbuider打开也完全没有问题 到这里我很兴奋
进入项目第一件事情就是编译,生成结果,然而问题从这里就产生了,你run 你debug修复一些Null Pointer,完全不起作用,程序运行的时候是彻底的白屏,并且不断的抛出这些异常。
当然那时的我天真的以为这只是一些小瑕疵,于是我尝试着对一些异常进行修复,但是修复到pv3d包内部异常的时候 我停止了,我突然觉得这是一项不可能完成的事情,PV3D这种充分测试的包一般是不可能有错误的。 异常的位置还有其他一系列著名的flex lib

于是我得出了我对flash decompiler的结论: 想要使用它来yy的人可以免了,它绝对不是你想的那样。但是不要太悲观,毕竟它反编译出了程序的架子,所以这些程序的架子对你还是很重要的,如果使用别人的这些架子 并且合适的填入你想要的代码,我觉得 也可以节省你很可观的一笔时间。

你可能感兴趣的:(框架,Flex,F#,Flash,D语言)