赞
踩
写在前面:
06年左右网页swf文件的播放一般不需要加密,而是直接调用swf文件在播放器中进行播放;11年左右,swf文件的播放逐渐演变为将完整的文件拆开成若干部分,把二进制数据加密后通过js代码或as代码的调用在合成swf文件进行播放。总之,但凡是flash播放器中能够看到swf文件内容,那么这个主swf文件一定是完成了数据的加载和swf影像的合成,最终完成的播放。
一、查看主SWF文件
通过浏览器的开发者工具,获取主swf文件,下载保存到本地。
二、反编译主SWF文件
本次反编译使用的软件是:ActionScriptViewer
打开ActionScriptViewer,加载下载得到的SWF文件,程序会自动反编译SWF代码,通过查看脚本,能够观察清楚该SWF脚本程序的结构(包与包,以及包与类之间的关系)。
三、下载并安装Adobe Flash Builder 4.7
按照网上教程完成Adobe Flash Builder 4.7软件的下载及安装后
四、根据反编译得到的脚本结构,重新构建该SWF源代码结构
首先、新建文件夹(包),在文件夹下新建AS类文件,将反编译得到的代码,复制黏贴进去。
关键就是,阅读代码,找出原网站传给swf文件的参数类型FlashVars value值作为参数,在新构建的代码中,直接赋值进去进行调试,调试过程中,
利用trace()语句,打印参数值进行调试;
利用var f:FileReference = new FileReference;f.save(_local2, 'doc');可以将数值保存到文件中。
写在后面:
主swf文件中,一定会有一个类的方法中代码类似:
_local2 = new ByteArray();
_local2.endian = Endian.LITTLE_ENDIAN;
_local2.writeBytes(_xxx);
_local2.writeByte(64);
_local2.writeByte(0);
_local2.writeByte(0);
_local2.writeByte(0);
_local4 = ((_00ll.length + _local3) + 4);//这句是计算SWF分割为两部分后,文件头中数据长度,更新第一部分swf数据大小
_local2.position = 4;
_local2.writeUnsignedInt(_local4);
_local2.position = 0;
Endian.LITTLE_ENDIAN;
涉及到10进制数据转16进制后,在左侧补0到偶数位,两两一组倒置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。