葛建军ID:chinaxman
7766次访问,排名13075(1)好友0人,关注者0
chinaxman的文章
原创 7 篇
翻译 0 篇
转载 0 篇
评论 24 篇
最近评论
wiyiflash:别处转来的吧,对最新的ASV,已经不起作用了
疯子阿虹:这篇文章是翻译的还是自己写的?
如果是翻译的?能把原文告诉我吗?
最近我正需要这样的资料:)

如果是自己写的,深度感谢~:)
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 如何防止SWF文件被反编译?(二)收藏

    新一篇: 如何防止SWF文件被反编译?(一) | 旧一篇: 利用Dreamweaver MX 2004来检查浏览器的兼容性(一)

     

     

    非显示字符和混淆器

     

    除了阻碍反编译器的技术之外,我们还可以使反编译的结果不容易读。你可以浏览关于混淆器的网站。

    基本上,它是对变量和函数的名字进行重命名。

    function -3(-4){trace(-4);}
    function -1(0,-2){
    if(0<-2){-3(1);}
    }

    肯定的是,偷窃者不能仅仅是拷贝、粘贴就能使用这些代码。编译器不允许你对一个函数进行这样的命名。

    混淆器的局限是改变函数的名字可能给下面的脚本代码带来麻烦。

    function myFun(){trace("myFun");}
    a="my";
    b="Fun";
    this[a+b]();

    另一个技术是使函数的名字不可显示。比如,用汉字作为函数名,反编译器可能就会不能很好的显示它。然后,我们便会看到:

    function ?(){?,?){?.?=?;}

    ASV 4使用unicode编码显示不可显示字符,所以,结果是易读的,只不过增加了点轻微的难度。

     

     

     

    自我保护

     

    如果你找到一个很好的方法来保护自己的SWF不备反编译,不要与别人分享这个方法,至少不要再因特网上公开它。当然,它不能过100%的防反编译,至少对我来说是这样。但是,不是所有的人都对SWF的格式了如指掌。许多,偷窃者仅仅只会借助软件来反编译SWF。因此,如果你的目的是尽可能少的偷窃者能够偷窃你的SWF,那么请保护好你的(白虎SWF的)秘密方法。

    只是在此提醒你,你的SWF是无保护的。对于熟悉SWF格式的人来说,所有东西都是毫无遮掩的。如果你的目标只是保护“一些函数”的话,它应该是安全的。他们未必会窃取你的函数,他们会编写自己的函数。

     

     

     

    通用保护措施

     

    我们在网站上放了个联机游戏,不幸的是,许多访问者只是访问我们的站点仅仅一次而已,然后利用下载的版本来离线玩。有时,我们甚至发现我们的游戏出现在其他的站点上。

    为了避免这种情况发生,下面是可采取的保护措施:

    1.         所属领域检查

    编写脚本检查_url,如果_url"http://www.myDomain.net/game.SWF"就播放影片,否则不播放或者退出。当离线播放的时候,_url应该像"file://C| someSub/game.SWF";但它在其它domain中时,_url就形如"http://www.others.net/game.SWF"。因此,这个技术可以恰当的加上一些保护。当然,对于心存不良的反编译者来说是无用的。那些脚本可以借助Flasm来删除或者修改为不检查。尽管在其它公开场合未必能看到被破解的SWF文件,但是离线也能够播放的SWF就可能发生上述情况。

    2.         服务端口令验证

    编写脚本,并且在开始游戏时从服务端加载密码。如果密码为空,则停止游戏或者退出游戏。这很容易被怀有恶意的用户破解,他们只要编辑SWF文件,将那些脚本删除即可。哪些脚本不可以被删除呢?当开始游戏时,从服务端加载的地图数据是进行游戏必须的,所以心存不良的用户不可能删除这些脚本。为了进行游戏,它必须提供这些地图数据。当然,它可以从缓存在临时文件夹中的数据中挑选地图数据,提供给SWF,从而激活游戏。

    3.         SWF或者变量置于服务端

    这是第二种技术的扩展、延伸,该技术已经广泛的使用着。起初的游戏(SWF)文件只是个装载器,当单击播放(或开始)按钮后,将加载另一个SWF文件。当需要地图文件的时候,便从服务端加载地图数据。当加载数据遇到阻碍时,将从服务段再次加载受到阻碍的SWF文件。新层上的数据也是从服务端传过来。

    从这儿。我们可以看到一个原则:防止反编译的最好方法是“不给”。

    如果一些愚蠢的窃贼只下载game.SWF文件,他不可能玩这个游戏。 他需要在缓存中挑选出所有的SWF文件和变量。打开所有的SWF文件,编辑这些变量的名字,使它与缓存中的变量的名字一致。

    如果我们的地图由CGI随机产生,那么窃贼只可能拥有一份地图,他没有随机产生地图的权力。如果是个迷宫游戏的话,充其量,他只能玩一个迷宫,他没有“动态产生迷宫”的功能。如果心存不良的用户玩这个游戏将碰到一个新的阻碍,因为在他的缓存中没有这个新的受到阻碍的SWF文件,所以将无法进行游戏。

    因此,许多算法和功能都放在服务端,那个SWF文件只是个界面而已。这是个完美的保护措施,但是缺陷是这件产生一个转为游戏工作的CGI,而不是Flash。我们正在讨论关于SWF的保护问题,这个解决方案是不妥当的,因为SWF文件自身得不到保护。

    (完)

     

    水平有限,敬请批评指正。

    E-mail:xmanceo@yahoo.com.cn

     

    相关文章:

        如何防止SWF文件被反编译?(一)

    发表于 @ 2004年04月27日 23:54:00|评论(loading...)|编辑

    新一篇: 如何防止SWF文件被反编译?(一) | 旧一篇: 利用Dreamweaver MX 2004来检查浏览器的兼容性(一)

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © chinaxman