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容易多了。 下次找时间发表一下原理.