最近整理老硬盘翻出个十几年前的flash小游戏,突然想看看它怎么写的。结果发现swf这玩意儿现在压根打不开,浏览器早就不支持了。折腾半天查资料,可算摸清门道了。
第一步:满世界找趁手工具
抄起浏览器就开始搜“swf反编译”,跳出来一堆花里胡哨的软件名。看论坛有人说FFDec好用,开源还不收费,麻溜去下了最新1.15版。解压时候杀毒软件突然嗷嗷叫,吓得我手抖,心说这玩意儿不会带毒?咬咬牙把杀软关了才解压成功。
第二步:跟乱码死磕
兴冲冲拖了个*进去,结果预览区全显示方框乱码。拍着大腿才想起来老flash默认是日文编码。满屏翻设置项,在“字体渲染”里找到编码选项,换成简体中文GBK还是不行。切到ISO-8859才勉强显出字来,字符歪歪扭扭跟喝醉似的。
第三步:暴力拆包
直接点工具栏那个“提取资源”按钮,好家伙蹦出三十多个文件!图片音频全混在文件夹里,名字都是as_1、img_2这种乱码。挨个点开找关键信息,活像在垃圾堆里翻钱包。突然看见个*眼前一亮,这肯定是主程序了。
第四步:看代码脑壳疼
双击打开as文件瞬间傻眼,满屏都是gotoAndPlay、stopAllSounds这些陈年老语法。更绝的是变量名全取成a1、mc2这种天书,开发者怕是故意防人看懂?捏着鼻子往下读,发现段控制角色跳跃的代码,七八个if嵌套看得眼冒金星。
第五步:动手改着玩
想试试改个无敌模式,找到个onEnterFrame函数瞎捣鼓。把碰撞检测那行代码前面加个//注释掉,保存时候提示要导出swf。导出完双击运行,结果角色直接穿墙飞天!正乐着游戏突然崩溃,低头发现控制台报错说*3找不到——刚才拆包时候手贱删错文件了。
重新打包总算能跑,结果发现这破游戏藏在素材堆里的结局动画贼羞耻,这要是当年做课件的老师知道学生扒出这种东西…气得我直接清空回收站。