说起SWF文件这玩意儿,现在基本快绝迹了,但前几年搞动画或者早期的网页互动设计时,这玩意儿可是香饽饽。我就干过一回这种活,一个朋友搞了个早期的Flash小游戏,里面有个动态的文字提示需要改一下,原作者早没了联系方式,那可真是让人挠头。拿到手一看,一个纯纯的.swf文件,你说这怎么搞?
最开始我也没啥好办法,直接用记事本打开,那里面全是乱码,根本看不出个所以然。后来我琢磨着,既然是Flash导出来的,那肯定得用Flash相关的工具才行。我记得我当时电脑里攒着一个Adobe Flash Professional(现在叫Animate),版本比较老了,就想试试能不能直接导进去。结果,导入失败,人家告诉我这文件太“新”或者太“老”了,版本对不上,进不去。
碰壁之后,我开始在网上搜寻专门针对SWF文件进行逆向编辑的工具。我记得搜出来一堆名字,什么Sothink SWF Decompiler、JPEXS Free Flash Decompiler。我试了JPEXS那个,因为它看着比较轻量,而且免费。
我把那个SWF文件拖进去,界面一开始看着挺唬人的,一堆文件结构在那儿摆着。我得先找到那个需要修改的文本数据在哪儿。我记得那个文件结构里,能看到ActionScript代码、图片、声音,还有各种资源标签。

找到位置后,编辑起来反而简单了。我直接选中那段字符串,把旧的文字内容替换成了我朋友要的新内容。替换完之后,我得确认一下其他地方有没有依赖这个字符串的地方,确保改了之后不会导致程序崩溃或者错位。幸好这个项目结构比较简单,只是改个提示语,没牵扯到复杂的逻辑。
修改完代码字符串,我开始思考如何保存。JPEXS这个工具很给力,它允许你直接修改了资源后,直接点击“导出”按钮,然后选择“导出SWF文件”。它会重新把修改过的所有资源和编译后的ActionScript打包成一个新的SWF。
导出来之后,我立马找了个Flash播放器打开测试。奇迹发生了,那个提示语果然变成了我们修改后的内容。而且整个动画流程都没有任何问题,播放得很顺畅。
搞定这个之后,我赶紧把那个新的SWF文件发给了朋友。这种老旧格式的逆向编辑,全靠碰运气和找对工具。要不是当年那些搞Flash的人留下了这么些个逆向工具,现在想改一个几年前的玩意儿,估计就得重做了,那才叫麻烦。
