如何防止SWF文件被反编译?
作者:佚名 发布时间:2008-12-06 09:20:00
这篇文章的标题所提出的问题的答案是“不可能”。至少对我来说是不可能的。借助适当的工具,我们可以反编译任何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分钟便可以破解这种保护措施。
猜你喜欢
- 世界上没有绝对安全的系统,即使是普遍认为稳定的Linux系统,在管理和安全方面也存在不足之处。我们期望让系统尽量在承担低风险的情况下工作,这
- 康盛的 authcode 函数可以说对中国的PHP界作出了重大贡献。包括康盛自己的产品,以及大部分中国使用PHP的公司都用这个函数进行加密,
- 核心提示: 据研究,首屏的广告点击率远高于第二屏的广告,所以您应该尽量把AdSense 广告放在网页的首屏,这可以给您带来更高的广告收入。生
- 如下图:完整的出错信息看上图。这种情况一般来说是因为.net的版本问题造成的。我们看到最后一行显示ASP.NET版本为1.1.4322.24
- shell中如何判断一个变量是否为空shell编程中,对参数的错误检查项中,包含了变量是否赋值(即一个变量是否为空),判断变量为空方法如下:
- JMeterJMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。GrinderGrinder
- 前一段时间提交了一个产品版本给测试人员测试,测试结果简直出人意料!测试一段时间后页面就卡死了,当时根据这个现象下意识的怀疑是卡到数据库这一层
- 前言当一个Linux完全设置完成以后,就可以使用克隆的方式来在短时间内创建出多个Linux来;本文将给大家详细介绍关于centos克隆lin
- Tools工具箱是为了方便广大站长日常维护论坛等程序而出的工具。工具箱只有单一的一个文件,便于上传和使用。比如找回管理员、修复数据库、导入数
- 1、购买云服务器注册帐号,在产品页面选择合适的服务器,进入详细页面选择配置,购买。购买完成后进入管理控制台——云虚拟主机、ECS云服务器查看
- 为了能够使用XShell来管理我们安装好的CentOS7系统,所以我们要先设置CentOS7的网络使其能够联网。1.选择vmware的编辑,
- 0.前言之前在学springcloud的时候,提到有些项目还是使用zookeeper作为注册中心。因此决定掌握这个技能,但是本地为了测试而部
- 问题一:双核的优势在哪里?主要的应用领域有哪些?彭震:由于双核处理器在性价比、功效和可扩展性方面具有极大的优势,双核处理器可以在不改变基础设
- 对于遭受DDOS攻击的情况是让人很尴尬的,如果我们有良好的DDoS防御方法,那么很多问题就将迎刃而解,我们来看看我们有哪些常用的有效地方法来
- 1、首先当然是把网站的内容做好:但是,这里千万需要重申一点:不要一味追求“原创”,切忌不顾一切原创内
- 作为网络管理员,不少朋友也同时负责单位的网站开发维护的工作,对于WEB开发我想大家都比较精通,可是对如何编写安全的脚本代码和入侵者如何通过W
- 《商业大亨》的时装系统一经推出,便受到众多玩家的一致喜爱,时装系统不仅能够体现出玩家的名流气质,还可以为员工提升各方面的实力,在员工PK中占
- Windows2003服务器安装及设置教程——组件安全篇 卸载并删除WScript组件WScript.Shell可以调用系统内核运
- 一、按照网上的教程,安装Ubuntu 18.04还是会安装不上去,有同学就有疑问了,明明按教程来做,就是不成功报错如下:二、执行命令时加入s
- 背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题?通过多线程模拟多窗口售票为例:#include <iostream>