当前位置: 首页 > 图文教程 > 网站运营 > 建站经验 > 如何防止SWF文件被反编译?

建站经验
经验探讨 用户体验与搜索引擎优化的结合
让你的网站产生Google Sitelinks的六个要素
凸显使用体验 网站导航最受美国厂商关注
外国人眼中网站设计和网站建设二十个原则
网站更换域名应该注意的八个方面
五年经验告诉你 细节决定网站成败
新网站如何提高流量
稳中求升 购买付费链接应注意的九个问题
经验越多下手越难 你能抛弃你所学习的吗
站长进行设计网站时必须注意二十三个方面
路径突破 谈谈英文站比中文站更能做成功
谈谈网站运营中的关键的一环 团队的管理
最原始的东西最有价值 致天下所有创业者
名博怎样练成 析月光博客成功的六个原因
学生站长持续自己的冬天 仍坚守春天的期待
关于对web的分析 获得可行动的认识和度量
五个月前后五次改动 让我的流量稳在五万
亲手关闭自己论坛 泣血奉献一些心得经验
用户体验指导思想 易用友好 把用户当傻瓜
网站如何将用户体验与搜索引擎优化相结合

建站经验 中的 如何防止SWF文件被反编译?


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 60 ::
收藏到网摘: n/a

这篇文章的标题所提出的问题的答案是“不可能”。至少对我来说是不可能的。借助适当的工具,我们可以反编译任何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”和商业的“ASV2.0”。Flasm就是“Flashasm”,它将SWF中的字节码解释成可理解的简短代码(p-codes)。比如“a=3”显示为pusha, 3,setVariable;SWF中的字节码是:96 08 00 00 61 00 07 03 00 00001D。如果想学习“SWF格式结构”的话,这是个非常有价值的工具。

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

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