sothink swf decompiler反编译的常见错误

时间:2022-09-27 05:25:32

1.  当bytecode 出现new activation或者 dup的时候,会出出现下面语句.

 1.1        loc_1;

             //通常是loc_1=this或者loc_1=0, local=x

1.2        loc_1 = new ObjX();

             new ObjectX().x = 0;

             //通常是dup之后发生.

 

 

2. 当代码使用xml的查找功能时候,返编译出来的基本无效.

        xml.@(id=1); 反编译出来的代码变成一个错误的循环.

3. 当代码使用alchemy库的部分,大量初始全局变量没有正确反编译, 应该是对script_info的相关init method没有做好工作.

           本身alchemy的代码是x86 asm的as vm实现,正确也没有什么用.  写了个修改工具,直接抠出相关的bytecode做成swc.

 

4. 复杂的闭包函数会导致大量的dup, new activation等...语法就开始错乱了.

       情形类似1.

5.  无法正常反编译 IProxy继承出来的类.

6. 对于 xml , dictionary 等, 使用for each, for in 语法混乱,令到代码看起来没有错,但无法正常工作.

 7. meta-data丢失

 

将现有swf代码diy成swc感觉比较有趣, 比较pe容易多了。 下次找时间发表一下原理.