发新话题
打印

[讨论] 自创一个简单的保护fla的方法

自创一个简单的保护fla的方法

有时候给别人做flash,客户总说要先给fla文件才支付报酬。这种事总让人郁闷,所以就想了一个鬼主意来保护自己的作品。既可以把fla文件给客户,又可以让客户拿到fla之后只能在一个有效期之前使用发布出来的swf

简单介绍一下我的思路吧,就是把一些重要的类或者Sprite打包成swc文件,这样客户就不能修改这些封装过的资源了,然后可以在这个swc中加入日期校验,如果过期那么就停止系统的功能。所以fla就算到了客户手上,他发布出来的swf也只能在作者限制的日期之前使用。如果swc中日期校验是静态的,也就是只能设定一个不可变的过期日期,检验当前日期是否在此日期之前,使用上会有些不方便,过期后客户还要找你重新要fla文件。受到软件注册的启发,我做了一个License类,可以实现输入注册码后延长有效期。分享给大家希望抛砖引玉。

例子和相关文件都在压缩包中。我自简单说明一下例子吧。
例子中有两个文件夹,封装前和封装后,封装前就是指我做的的这个TestSprite还没有打包成swc,封装后就是已经把TestSprite做成了swc放到fla中了。当然给客户的应该是封装后的。但是为了让大家看明白怎样使用License类,所以把封装前的fla也发出来。(抱歉我比较啰嗦)

从封装前的TestSprite.as中可以看到,这个类首先创建一个License对象,创建的时候给它一个名字和一个有效期。为了保证License类不被客户非法替换了,所以需要创建后进行一个id校验。这个id是根据之前输入的名字用keygen.swf生成的。因为封装后客户就不知道你输入了什么名字,所以可以保证如果他替换License类的话,你这里获得的id就不会是keygen.swf中生成的那个,这时就可以禁止系统功能。这里也建议名字尽量给长点,那样不容易被破解

如果License类是正常,那么就可以初始化系统了。初始化的时候就通过License类的validate方法校验是否在有效期内,当返回true的时候就表示还在有效期,则可以进行相应操作,如果返回false就表示已经过期,这时又可以进行禁止系统功能的操作了。

在TestSprite中嵌入了License校验之后,如果需要延长有效期,那么可以通过License类register方法进行注册,如果注册成功则有效期延长。注意License的register方法应该在validate方法之前被调用,这样才保证校验时候时使用注册之后的有效期。TestSprite中的Liecense对象应该对客户封闭,这样以免他非法使用,因此需要TestSprite提供一个方法来隐藏License的register方法。

封装以后库里只看到一个TestSprite的影片剪辑,如果在初始化系统之前,使用了register方法注册成功,那么有效期就延长了。见第一帧上的as代码,如果不注册,那么点按钮初始化时,会看到License过期,因为生成License时设定的有效期是20080512,如果注册了,那么有效期将被延长。

ps:AS3的保护方法,似乎现在破解AS3的工具还不多,AS2以前的话基本保护也没用了。但愿对大家有点用

[ 本帖最后由 rkuke 于 2008-5-29 22:16 编辑 ]

附件

保护fla.rar (179.73 KB)

2008-5-29 22:07, 下载次数: 255

TOP

看了一遍,没看明白,收藏起来,等上班了到单位打印出来慢慢看。
谢谢楼主分享

TOP

我表达的不太好呵呵,抱歉啊。需要结合例子看一下可能就能明白了

TOP

嗯,楼主这个文章我一定要看懂,哈哈,我觉得楼主的思路不光可以用到加密上。
今天用的FLASH8,没打开源文件,下周上班到单位慢慢研究,哈哈。
睡觉了!

TOP

我看了三遍,看不懂,有没有比这个还简单的保护方法,我经常给别人作flash 课件,保护不了fla文件,所以我特别需要这方面的知识,多多执教。

TOP

破解与反破解
喜欢交朋友,QQ474700899

TOP

抱歉表达不太好。我想使用还算方便的,简单的来说就是以下四个步骤:
1. 把License.swc放入到你的fla中,以便你可以使用License类。
2. 在你自己的程序中创建License对象,并利用该对象的validate方法校验是否过期,过期的话就在你自己的程序中采取限制功能的操作。
3. 把你的程序也打包成swc文件,防止客户的修改。
4. 通过在封装后的fla中使用License的register方法,可以使validate校验时返回true的期限延长。

第2步中,为了防止客户替换License类,让你通过License校验时发生不是设计时候的操作,在创建License对象的时候,通过返回的id检查是否License类是当前我提供的这个License类。这个id是通过keygen.swf生成。
第4步中有效的key也是通过keygen.swf生成。
因此这里我提供了License.swc,同时也提供了配套的keygen.swf以便你在开发时候使用

[ 本帖最后由 rkuke 于 2008-5-30 00:23 编辑 ]

TOP

思路很不错

TOP

我这个人有点笨,请问  License.swc 从哪里找放入fla 中,flash 脚本里有吗?

TOP

把swc文件放到:“flash安装目录/en或cn/Configuration/Components”文件夹中,就能在flash的组件面板中看到License,然后把它拖到库中就ok。

TOP

问题是把全部元件都封装起来,不能改动,人家还要你fla文件干什么啊?

TOP

你可以只封装你的程序就ok了,封装的问题取决于你自己啊!

TOP

谢谢    rkuke

TOP

收下了,谢谢

TOP

我在做flash的过程中。遇到这样的问题。。。
**错误** C:\Documents and Settings\disqqo\Local Settings\Application Data\Macromedia\Flash 8\zh_cn\Configuration\Classes\FP8\TextField\StyleSheet.as: 第 7 行: 此类'TextField.StyleSheet'的名称与加载的另一类'TextField.StyleSheet'的名称冲突。
     {

ActionScript 错误总数:1          报错:1



有没有能告诉我怎么没有事了》??
我系统还原过,,(备份里有flash8),我遇到些问题还原了系统。后我又装过8了, 是不是文件冲突。。如果是。要怎么解决?

知道的哥哥,姐姐加我Q吧。我是初学者哦。553694697

TOP

我怎么还是没看明白捏?

终极 明白了?

TOP

好东西,帮你顶起

TOP

先收藏了
慢慢看
ckhxlt.blog.163.com

TOP

不错不错 该学的都要学

TOP

学习中

TOP

据我所知 打包成swc是可以用解压打开的 我刚刚尝试了下 果然可以 主要是可以打的包可以加密 现在就去找找看
分享是一种快乐,交流才可以提高 http://www.rgb123.net

TOP

呵呵,一年前已经用这个方法了,不过还是不同意先给源码再给钱的做法
水星

TOP

偶感觉楼主的意思是让客户得不到所有的文件,至于偶们这些人如何保护自己的文件,看了几扁,也没能明白.整个过程如何实现的不能明白,如果能做个屏幕讲解就好了.

TOP

不懂!要好好研究研究.....

TOP

很强...思路不错...收藏了...

TOP

没事的时候去看一下也不错吗

TOP

我常用的是flash7,swc文件打不开,但可以用flash9打开。fla原文件却既不能用flash7打开,也不能用flash9打开,若fla原文件是用flash8制作的,按理说flash9是应该可以打开的,不知为什么?
想学学楼主的技术,请指点。

TOP

貌似打不开源文件呃

源文件打不开呢。。我用的是8。0版的

TOP

看样子我下载的flash9是功能不健全的软件,因为打开组件面板,所有组件字体都是灰色的,也就是组件打不开,不知何处有正版的下载。

TOP

发新话题