如何防止SWF文档被反编译?

2008-04-02 11:05:40来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  这篇文章的标题所提出的问题的答案是“不可能”。至少对我来说是不可能的。借助适当的工具,我们能够反编译任何SWF文档。所以,不要将重要的信息置于SWF文档中。SWF文档中不要包含个人的帐号或密码。

  我将简要的论述“保护”技术的历史,和他们是如何失败的,接着我将说明我们能尽的最大努力。中国古语有云,“规则只能防君子,不能仿小人”。

  公开的文档格式

  在讨论之前,我们先要知道,SWF的文档格式是公开的。公开的文档格式,意味着SWF文档并不是只能由Flash生成。其他公司也能制作能够在SWF播放器上播放的SWF文档。公开的文档格式意味着从什么位置获取什么信息是众所周知的,也就意味着每个字节都是众所周知的。因此,假如我有时间来一个字节一个字节的检查SWF文档,我能够了解任何的细节。

  当然,对于一个2M大小的SWF文档,我没有时间来逐个字节的检查。因此,我就借助软件来完成这个工作。假如软件碰到问题,我会暂时接管这个工作,检查发生问题的字节。修正他,然后继续。所以,没有什么东西能够掩藏的住,其限制只是我的时间和我的耐性。假如反编译一个SWF文档的酬劳是数百美元的话,我想我会花上数年时间来逐个字节的读取他。

  好了,以下是反编译和保护技术之间的战争历史。

  防止被导入

  伴随着Flash的出现,Macromedia提供给研发者一个“防止导入的口令保护”功能。假如您给SWF文档加上导入口令的话,这个SWF文档就不能被导入了(知道倒入密码除外)。SWF文档不加保护的话,其中的矢量图像能够被导入到fla文档中。这种保护没有什么用处,仅仅是假想的安全。

  试想一下,您的SWF被用户的播放器来播放的,您不可能利用用户的播放器来保护您的SWF文档。因此,他是如何来保护SWF文档的呢?很简单,这种保护存在于您所买的Flash研发工具中。Flash研发工具不能导入有(导入)密码的SWF文档。没关系,对吧?我能够用十六进制编辑打开那个SWF文档,删除保护密码,从而也就移除了保护功能。

  如此简单,所以忘记导入保护功能吧。

  转换成放映机文档并且压缩

  假如我将他转化成exe格式的放映机文档,还能够被反编译吗?答案:是的,SWF文档仍然存在其中。借助软件能够很容易的将SWF文档从exe文档中释放出来。压缩能够使SWF文档不能被十六进制编辑器读取,压缩是一种保护措施吗?压缩算法类似于zip算法,很容易被破解。

  FLASM AND THE P-CODE

  在flash5的时代,出现了两种流行的工具,免费的“Flasm”和商业的“ASV 2.0”。Flasm就是“Flash asm”,他将SWF中的字节码解释成可理解的简短代码(p-codes)。比如“a=3”显示为"push 'a', 3", "setVariable";SWF中的字节码是:"96 08 00 00 61 00 07 03 00 00 00 1D"。假如想学习“SWF格式结构”的话,这是个很有价值的工具。

  程式员喜欢用高级语言(比如:C、C )来研发软件,但是当讲求效率的时候,他们会在其中混合使用低级的汇编语言。因此,有时候研发者会利用Flasm编写低级别的p-codes来增加效率。所以,Flasm编辑SWF中的actionscript是强有力的。您能够参考例子,了解如何利用这种技术来优化3D代码,但是怀有恶意的用户能够“编辑”SWF文档,SWF中的任何保护措施都能够不费力的移除。我们无需知道密码就能够移除保护措施。

  这儿有个通用、知名的技术来保护我们的影片不被偷窃并在其他的范围内显示。我们编辑脚本来检查_url属性,假如_url不是我们(合法)的范围,就使功能失效并显示一条“You are thief”的消息。可是,借助Flasm能够很容易删除这条脚本语句。无需1分钟便能够破解这种保护措施。

  ACTIONSCRIPT VIEWER AND "void (a)<=b>"c" || 0(!1 && !0)"

  ASV(ActionScript Viewer)能够从SWF中提取出角色,例如::声音、形状和位图等都能够被窃取。

  他同样能够提取actionscript字节码,ASV 2尝试将p-codes匹配成高级别的actionscript。当碰到"push 'a', 3", "setVariable";时显示"a=3"这样的等同于actionscript的语言。然而我们能够创造没有任何模式来匹配的代码,从而破坏ASV的解析。利用Flasm,能够容易的编写不同于标准模式的代码,从而使ASV不能进行匹配工作。扰乱ASV 2工作的一句有名的代码是“;”,这是一条jung代码。他不做任何事,但是能搞乱ASV 2的工作。

  但是,当保护脚本众所周知时,ASV的作者(Burakk)当然不会放过他。这种保护技术对于ASV 3来说就失效了。

  飞速发展的反编译工具

  之后是MX时代的到来,许多反编译工具的出现,加快了Flash厄运的速度。

  现行版本的ASV 4除了显示得到匹配的actionscript代码,得不到匹配的代码以p-codes形式显示。假如解释成p-codes发生问题,将显示SWF中的字节码。他同样能够显示代码在SWF文档中所处的偏移量,这意味着他不会失效。您不可能扰乱他的工作,因为,至少他能显示SWF文档中的“字节码”。

  更甚的是,Flash MX2004提供通过JavaScript API来生成”fla”文档。那使他能够建立发布成SWF格式的fla文档。此刻,任何的东西都在那边了。

  更不用说声音、形状和位图了,偷窃者不喜欢这些东西,因为他们套容易取得了。偷窃者喜欢切的actionscript,因为其中隐藏着密码,因为其中有阻止此影片正常播放的脚本代码,

  假如ASV只能将脚本反编译成字节码,那么他对于大多数偷窃者是没有用处的。因此很多人进他们的最大努力来阻止ASV 4将脚本反编译成actionscript或p-codes。实际上,对于大多数反编译者来说,脚本得不到匹配,反编译工具就无用了。

  这是曾用过的一些技术,当他们在因特网上发布并且被反编译组织揭示之后,每种技术的保护效果最终都会变得很薄弱和气数将尽。

  依据数据尺寸(句子)分块反编译

  大多数之所以能够成功的迷惑或破坏反编译器,原因在于播放器和反编译器的不同行为。播放器逐个的执行字节码,就像现实世界中的读书相同,一个单词,接着下一个单词。然而反编译器通常将字节链分成有意义的片断,犹如现实世界中的读书相同,一个句子,接着下一个句子。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Flash制作大雪纷飞效果动画

下一篇: 在Flash中配置背景色为透明色