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

2016-01-29 14:26 25 1 收藏

如何防止SWF文件被反编译?,如何防止SWF文件被反编译?

【 tulaoshi.com - Flash 】

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

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

  

  公开的文件格式

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/flash/)

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

  防止被导入

  伴随着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”和商业的“ASV2.0”。Flasm就是“Flashasm”,它将SWF中的字节码解释成可理解的简短代码(p-codes)。比如“a=3”显示为pusha, 3,setVariable;SWF中的字节码是:96 08 00 00 61 00 07 03 00 00001D。如果想学习“SWF格式结构”的话,这是个非常有价值的工具。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/flash/)

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

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

  ACTIONSCRIPT VWER AND void (a)<=bc0(!1&& !0):1

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

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

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

  飞速发展的反编译工具

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

  现行版本的ASV4除了显示得到匹配的actionscript代码,得不到匹配的代码以p-codes形式显示。如果解释成p-codes发生

来源:https://www.tulaoshi.com/n/20160129/1493278.html

延伸阅读
标签: 电脑入门
swf是什么文件,swf文件是flash动画文件,那么swf文件用什么打开呢?其实需要打开swf文件方法有非常多,下面编辑介绍大家几种最简单的打开方法,希望对接触swf文件新手朋友有所帮助。 swf文件打开方法汇总 一:使用flash软件打开swf文件 由于flash动画设计软件设计出来的动画文件最终保存的文件就是swf格式文件,那么flash软件可以打开该...
标签: flash教程
Action Script Viewer 4.0可以分析Flash文件(.swf)文件的内部结构,并将其中的动作脚本(actionscripts)分解出来,软件支持Flash4、Flash5、Flash MX和Flash MX2004制作的swf文件,分解出的动作脚本可以保存为文本格式,在编辑过程中可以随时对Flash文件进行预览,是一个不可多得的好东东! 官方主页: http://buraks.com/ ...
标签: 电脑入门
swf文件是flash动画文件,打开swf文件方法有很多种,下面给大家分享下几种最简单的打开方法。 打开swf文件方法如下: 一:使用flash软件打开swf文件 由于flash动画设计软件设计出来的动画文件最终保存的文件就是swf格式文件,那么flash软件可以打开该类型文件是不可执意的,但flash软件比较大,一般用户只是需要查看动画,运行动画中的游戏或视频而...
Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码。 之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能。 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反...
标签: flash教程
三、swf与exe文件之间的互相转换 用Flash自带的播放器可将一个swf文件转换成一个可自动播放的exe文件,这个转换过程只不过是在该swf文件前后加上播放器的代码而达到的,当我们知道了这个转换原理后,我们就可以实现由exe向swf转换了。 对由swf文件转换成的exe文件进行分析后,我发现Flash自带的播放器只是对swf文件做了如下几...

经验教程

434

收藏

5
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部