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

原创 2004年04月27日 23:54:00

 

 

非显示字符和混淆器

 

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

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

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文件被反编译?(一)

把swf反编译成fla的几种方法

2007年著   第一种方法: 利用IMPERATOR FLA1.63 ,这个软件有演示版 和正式版 , 演示版不能反编译Action Scropt,在利用正式版反编译的过程中有时会丢失Act...
  • dj0379
  • dj0379
  • 2012年10月15日 14:14
  • 9951

使用加密来保护你的Flash文件被反编译

反编译真的让flash制作者讨厌的东西。你花大量的精力做了一个很好的游戏,却有很多人盗用,并且替换了你的logo然后将其放到他们自己的站点。 怎么做到呢?就是通过反编译。如果你不将你的swf进行保护...
  • lcg_ryan
  • lcg_ryan
  • 2014年12月24日 14:45
  • 2230

SWF文件反编译调试记录

写在前面: 06年左右网页swf文件的播放一般不需要加密,而是直接调用swf文件在播放器中进行播放;11年左右,swf文件的播放逐渐演变为将完整的文件拆开成若干部分,把二进制数据加密后通过js代码或...
  • underdogs
  • underdogs
  • 2017年07月09日 20:52
  • 416

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

来源http://www.coreldraw.cn/blog/blogview.asp?logID=125这篇文章的标题所提出的问题的答案是“不可能”。至少对我来说是不可能的。借助适当的工具,我们可以...
  • liswa
  • liswa
  • 2005年04月28日 11:32
  • 978

如何防止SWF文件被反编译

这篇文章的标题所提出的问题的答案是“不可能”。至少对我来说是不可能的。借助适当的工具,我们可以反编译任何SWF文件。所以,不要将重要的信息置于SWF文件中。SWF文件中不要包含个人的帐号或者密码。我将...
  • TO_YGY
  • TO_YGY
  • 2008年01月15日 15:54
  • 765

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

如何防止SWF文件被反编译?  这篇文章的标题所提出的问题的答案是“不可能”。至少对我来说是不可能的。借助适当的工具,我们可以反编译任何SWF文件。所以,不要将重要的信息置于SWF文件中。SWF文件中...
  • chinaxman
  • chinaxman
  • 2004年04月27日 23:55
  • 4569

swf文件的反编译入门

/*------------------------------------------------------作者:WiNrOOt[FCG]使用工具:flasm? http://www.nowrap...
  • sujun10
  • sujun10
  • 2007年05月12日 01:02
  • 2970

.net dll或者exe避免被反编译的方法

1. 使用商业版混淆器软件 2. 核心代码用C++封装dll,提供给.net 调用
  • qq_20161893
  • qq_20161893
  • 2018年01月06日 13:26
  • 135

Android开发之反编译与防止反编译

防止反编译是每个程序员的必修课,因为当你辛辛苦的研发一个应用,被人家三下五除二给反编译了,是一件多么尴尬的事啊。那么如何防止反编译啊?这里就用Google Android自带的代码混编的方式来防止反编...
  • fengyuzhengfan
  • fengyuzhengfan
  • 2014年09月10日 22:17
  • 6663

[教程]防止模块被反编译的有效方法(吴总提供):

点击阅读原文防止模块被反编译的有效方法:请在模块中建立一个或多个窗口,将其"可视"属性设置为假,窗口上放一些随机类型的组件(尽量不要用常用组件),重要数据分散放在这些组件的属性里面...
  • Exiaoyin
  • Exiaoyin
  • 2016年07月12日 13:50
  • 411
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何防止SWF文件被反编译?(二)
举报原因:
原因补充:

(最多只允许输入30个字)