今天收到了一封邮件:
买了您的FLASH组件、游戏、SWF加解密,对SWF的加密和解密产生了兴趣,在网上看见了下面这个网址 ,很想学习研究一番,如何得到这种后台输出的SWF,但没成功,希望得到您的指教 使用PHP来保护你的flash作品网址:http://www.weni.cn/index.php?play=reply&id=47这个3D的swf已经可以在此页面中可以看到,但在IE缓存中没有, 不知道如何得到它? 仅仅是为了学习、研究。
解答(www.fanflash.cn):
因为文中已经写出了这种保存方法的原理,所以解决的难度已经降低了,更何况它加载的地址是公开的.
要下载到目标SWF可以编写一个下载程序,模拟flash player向服务器提出下载请求,不过这种方法真的是很费时,另一种方法是使用flash里面已经存在的下载文件的类"FileReference",让flash把文件下载下来,下面是得到文件夹的整个过程
第一步:
首先我们要得到这个"壳"的SWF,为的是得到他的下载地址:
右击"++ 点击显示/隐藏媒体 ++",然后点击属性,就可以看到这个"壳"的地址了
第二步:
我样要得到真实SWF的地址,先把那个"壳"下载下来,然后我们可以用ASV来看看文件的真实地址.
从上面这张图可以看出,他的地址应该是:http://www.weni.cn/upload/protect_swf_with_php/index.php
第三步:
使用FLSAH下载它,下面是简单的一段代码:
import flash.net.FileReference;
var listener:Object = new Object();
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
_root.output_txt.text += "下载载情况:" + bytesLoaded + "/" + bytesTotal + "\n";
};
listener.onComplete = function(file:FileReference):Void {
_root.output_txt.text += "下载完成";
};
listener.onIOError = function(file:FileReference):Void {
_root.output_txt.text += "下载出错";
};
var fileRef:FileReference = new FileReference();
fileRef.addListener(listener);
var url:String = "http://www.weni.cn/upload/protect_swf_with_php/index.php";
fileRef.download(url, "3d.swf");
这个FLA文件下载(下载后去掉.rar这个后缀):
点击下载此文件
第四步:
用IE浏览器以"http://"方式访问这个SWF文件,在这里,我把生成的SWF文件放进我电脑IIS设置的默认网站文件夹内,然后以"http://localhost/test.swf"访问:
选择保存位置后就可以下载这个被隐藏在后面的文件了
打开被下载的3D.SWF文件: