- 在线时间
- 385 小时
- 专家
- 0
- UID
- 395440
- 注册时间
- 2007-9-9
- 帖子
- 337
- 精华
- 0
- 积分
- 588
- 离线
- 330 天
- 帖子
- 337
- 体力
- 548
- 威望
- 8
|
发表于 2009-6-13 19:27:48
|显示全部楼层
回复 5# 321321321 的帖子
正解.
可以说无论用什么操作系统,都不能用数字做变量名的,如果那样的话编译器将无法区别普通数字和变量了.
当编译成swf后,变量名放在了Constant pool中的string块,数字放constant pool的前3个块:int,uint,double.当avm2去解析调用时,他们分属于不同区块,在这里变量名和数字不会有分不清的情况.
所以在这里,变量名只要和同一块的其他string不重复,可以改成任意字符.
混淆时把他们改成数字开头后接"乱码"破解后基本上没法看懂了,而且导出源文件后,无法正常再编译,还需要手动把所有名字的改成正常
我说的变量名通指包括方法名,类名等这些标识符.
ps:上次混淆as比较复杂,要考虑好多正则逻辑,而且也只能混私有字段.
如果混淆swf的话可以比较轻松的混淆所有自定的标识符,但是这些标识符和系统内部标识符(如:Sprite),普通字符串都混在一起,目前还无法区分他们 ,还需继续分析.. . |
|