如皓月繁星 發表於 2008-10-8 19:03:03

破解Flash动画

在某网站上看到一个flash,觉得可以作为讲课时的演示,于是想保存下来。没想到保存之后再打开flash就不能正常播放了。
<br />
<br />    我记得san以前学英语的时候搞过一批新东方的flash,于是找到他当时写的文档看了一下。这才知道,原来flash也是可以反编译的。
<br />
<br />   用SWF Decompiler打开flash一看,发现里面果然有两个Action判断了自身所在的位置。伪代码如下: if (target._url.indexOf(&quot;somenonexistenthost.com&quot;) !=-1 || (target._url.indexOf(&quot;somestrings&quot;) != -1 ||(target._url.indexOf(&quot;_modules&quot;) != -1 || target._url.indexOf(&quot;web187&quot;)!= -1)))
<br />{
<br />var _l9 = new com.somenonexistenthost.crypto.aso#96727.aso#05500(target, pl, ci, pb, r, rp, w);
<br />}
<br />else
<br />{
<br />var _l10 = _root.attachMovie(&quot;sorry&quot;, &quot;sorry&quot;, 0);
<br />trace(_l10);
<br />_l10._x = Stage.width / 2;
<br />_l10._y = Stage.height / 2;
<br />} // end if
<br />
<br />    这就很好懂了,flash判断了自身所处的url里是否包含一些关键字,如果不包含,就进入一个“sorry”流程。
<br />
<br />   当时san所用的方法是替换函数,把处理异常流程的函数换成正常的。我琢磨对于硬盘上的flash来说,所谓url应该就是全路径,只要路径中包含了上面这些判断中的任意一个,应该就可以正常播放。试着把文件名修改为web187.swf,果然就可以了。
<br />
<br />   那怎么才能简单地干掉这个检测,以任意文件名来保存呢?我最开始想到的是把检查的字符串替换成“\”,因为路径中肯定会包含这个。后来发现,其实只要让字符串长度发生变化(譬如删掉一个末尾的字符),flash就会把这里解析为空串,indexOf(&quot;&quot;)的结果就不会是-1,这样就可以绕过检测了。

<br />
頁: [1]
查看完整版本: 破解Flash动画