打印

[其它] 闲时无聊思考的东西-关于未来的网页SWF加密方案

说出来,好像有点异想天开的感觉.因为我现在想的是将来AS3编译的SWF的加密方案,而我现在的AS3依然是0状态,说出来的东西没什么根据.而且,到时候,加密和破解技术发展到什么层次,也不能预测.所以,我完全是在凭空想象.

从luzhugao发表了关于SWF的加密与破解一帖到现在,我看到了不少讨论这方面的帖子(包括特别重要的禁止缓存),结论都是"防君子不能防小人".

尽管在前段时间,我跟luzhugao的破解与反破解之争中,luzhugao是胜利者,但是,这说明他已经在加密的道路上取得成功了吗?答案是否定的,当初的挑战是有条件的,就是作为破解方的我,不能使用从缓存里找文件的办法.因此,他只是那场游戏里的胜方,在反破解的道路上,他依然还是要败给破解方.

以上的状况是由当前最流行的加密和破解软件的特点决定的.
常用破解软件:硕思闪客精灵,ASV(Action Script Viewer);
常用加密软件:Flashincrypt,SWF Encrypt.
在用Flash直接生成的SWF里,上面两款破解软件一般都能成功把SWF转成FLA.而加密软件则针对破解软件而进行放破解处理,Flashincrypt加密后,运行一般正常,且硕思已经无法还原,但是ASV可以.SWF Encrypt则是两样都能防,可惜在对复杂文件加密的过程中,容易出错.
在这种情况下,luzhugao对他的SWF做了如下加密操作:
网页里头放进的SWF不是他的大文件,而是一个小SWF,里头用loadMovie调用他的大SWF.其中,小SWF用SWF Encrypt来加密,不会出错,但是大SWF没办法,只能用Flashincrypt,因此,只要不允许在缓存里找,能找到大SWF就很难了.
但是,大SWF依然会存在于缓存里头.在缓存里找出来,用ASV就把核心代码拿到手了.
曾看到过很多禁止缓存的文章,其实最终都不能成功.大多数都只是隐藏.而且,哪怕给你藏住了,有心人可以用FF浏览你的SWF,让缓存赤裸裸地露出来.

现在,我假设当加密与破解软件都升级到AS3版本的时候,依然保持着上述的特点,那么,我就有了一个加密AS3写的SWF的想法.当然,我现在只能想,没有任何理论支持.
既然缓存无法禁止,那么,就只能考虑对SWF进行加密了.但是,如果只用上面的办法,始终无法防ASV.
听说AS3可以读写二进制了,记得我以前学VB编程的时候,是可以用程序自己写加密函数来对文件进行二进制加密的.所以就想到了通过脚本自己加密的办法.
步骤如下:
1 把你要放到网上的SWF准备好.
2 用AS3写一个二进制的加密函数(注意:一定要可逆的,就是要配有一个解密函数).然后,用脚本进行如下操作:
二进制读入SWF文件->得到一个BytesArray->加密算法得到新的BytesArray->用后台程序把新的ByteArray保存为SWF.
3 写一个小的SWF文件,装载被加密的SWF,这里自己设想一个MCLoader类,但不知道能不能写出来.
二进制读入加密SWF文件->得到加密的BytesArray->用解密算法把BytesAray还原成原始SWF的数据->用自己设想的MCLoader类调用loadClip方法,参数不是SWF的路径,而是一个BytesArray->根据BytesArray把SWF显示出来.

那么,装载影片的SWF依然还是比较简单,就一个装载动作,加一个解密函数,可以用SWF Encrypt加密,而被装载的大SWF可以不需要再用软件加密,因为你自己已经用自定义的加密算法作了处理.人家拿到手以后,估计没办法破解.因为ASV我想再聪明,都不会知道你用的二进制加密算法如何.要破到的话,必须知道你的加密或者解密算法.但是你的解密算法已经被SWF Encrypt保护了.加密算法是后台使用的,不会放到网上.

这些就是我闲时无聊想到的,没什么理论支持,大家如果对我这异想天开的东西有什么意见的,狠狠地批一顿吧.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028
这个想法挺有意思的。
我对第三步有疑问,就算能把解密工作完成,那么如何把二进制代码还原成swf呢,as3本身有这个能力吗
所以我才说没有把握嘛.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

用代码写已经很安全了,

现在是代码安全,带加载的图片不安全,

不过这也是没办法的事吧...

TOP

ASV的能力不是你可以想象得到的.有了它,代码可是非常的危险.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

回复 #5 HBrO 的帖子

怎么让代码危险? 给我支个招,我正想偷看一个swf文件的代码呢, 可是怎么都看不到。
全都是 var /0x,,,,,,
eval()。。。。。。
种种

TOP

他的文件代码应该不是很复杂,给成功加密了.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

倒是擔心,如果Flash Player/Flash 檔案本身(特別是二進制數據)就是安全隱患的話,加密會不會變成幫兇
而且效率方面呢?
說不定未來甚至有動態解密(因為如果需要播放,始終都是要解出來),只要理解Flash Player如何解讀代碼就好了(雖然這不是很容易的事情)
另外,多平台兼容性方面如何呢?Linux好似未必可以跟得上吧?如果其他平台播放不了,這樣會有意義嗎?

知識產權當然需要保護
但如果需要很複雜的步驟才能保護的話,我個人覺得Flash就不是對這類應用的合適平台了

[ 本帖最后由 Kirua 于 2006-10-14 16:22 编辑 ]

TOP

除非开发一套自我解释的编码算法,否则这种加密没有意义,那个很小的loader剪辑的加密过程是暴露的

TOP

如果二进制可以攻击人家的话,就危险了.

至于那个loader,我是基于当前加密软件SWF Encrypt的特点想出来的,可以很好地保证不给暴露.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

hbr可以写一个关于二进制应用的的教程吗,或者给点资料
对此比较模糊,只知道数值的二进制转换. BCD码之类的.

TOP

我还没开始学AS3,二进制只是以前用VB玩过的东西.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

我很多时候加密没把别人加昏,反而把自己加昏了,现在索性都不加了,直接开放源文件好了

PS:我们寝室楼的变电站爆炸了,现在上网还要跑学校信息中心,郁闷!

TOP

引用:
原帖由 HBrO 于 2006-10-15 01:28 发表
如果二进制可以攻击人家的话,就危险了.

至于那个loader,我是基于当前加密软件SWF Encrypt的特点想出来的,可以很好地保证不给暴露.
Mmm,这样说的话还是可行的。而且不会影响到速度。swf文件仍然是IE可以是别的MIME会被加载到缓存,但是对一般用户是不能读取的。只能使用loader这个环境。虽然增加了编程的复杂还是划算的。

遭到攻击的问题现在可以不用考虑,出现了问题adobe自然会有反应。而且flash没有文件输出的能力,想要攻击是比较困难的。

TOP

今天做了一个加密Flash播放器的模型,但是是用VB写的.大家下载以后,做如下的操作,就知道我的用意所在了.
打开播放器,选择"工具"-"加密文件",之后选择你要加密的FLASH影片file.swf,提示加密完成后,在你加密的SWF所在目录下,会生成一个文件名为file_enc.swf,此时,你用Adobe的播放器是打不开file_enc.swf文件的,因为它其实已经不再是swf格式的文件了,因此,ASV也不可能直接把它破出来.
那么,如何把这种已经损坏了的swf还原呢?选择"工具"-"解密文件",打开file_enc.swf,就可以把文件解密了,生成file_enc_dec.swf.该文件可以在Adobe的播放器里打开.
但是,我们现在需要使用的是加密了的file_enc.swf,才可以防止人家反编译.选择"文件"-"打开",打开file_enc.swf文件,会提示"该文件已经被加密",经过一段解密过程后,就可以播放这个加密了的swf文件了.
现在,只有我这个自己用VB写的播放器才能播放这swf,这样的swf是没有意义的,但是,我们可以尝试用AS3来把这个播放器写出来,因为我用到的加密算法是基于二进制的,所以用AS3重写估计会很有希望.可惜的是,现在我在解密播放的过程里,要生成一个中间文件存于硬盘,尽管我加载后马上删除,但是,如果在网上模拟这一过程,该文件将不能从缓存中删除.所以,如果能把二进制数据不存在于硬盘,而存在于内存,就好了.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

下载地址:
http://download.incoo.com/blueid ... enc_flashplayer.rar

[ 本帖最后由 HBrO 于 2006-10-15 18:05 编辑 ]
附件: 您所在的用户组无法下载或查看附件,您需要注册/登录后才能查看!
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

自己顶一下.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

楼主讲的很好!赞一个!

我一般就把swf命名为乱七八糟的后缀,比如jpg,ini什么的,反正加载的时候一样能用上
http://www.liuhuan.com

TOP

大家知道有个IE插件叫 HttpWatch 吗,我想从名字就能看出来,只要通过http协议加载的页面内容,他就能显示出来!用它得到并下载swf文件很容易的!

另外向大家推荐一个网站 http://www.ferryhalim.com/orisinal/ ,里面有很多创意、设计一级棒的flash游戏!
更棒的是,他似乎成功解决了Flash文件的安全问题,不信大家试试看,swf文件被下载后是无法播放的!即使下载了需要调用的所有文件,并且在本地恢复了文件的目录结构也是不能播放的!!
不知道谁能研究一下他禁止本地播放的原理!


[ 本帖最后由 kindkind 于 2006-10-18 17:49 编辑 ]

TOP

就一个识别URL咯.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

引用:
原帖由 HBrO 于 2006-10-19 17:45 发表
就一个识别URL咯.
哦?是吗?我还试图破解过的!大意了,大意了!呵呵!
至少推荐了个软件给大家下载Flash用啊!
我再破解试试看!

TOP

看看这个是什么加密原理

http://www.adriantnt.com/products/flash_buttons_2005/
缓存里只有buttons.swf(有一点加密,需用asv5查看),感觉好象是用flash Remoting加载什么东西,不过只能online看到漂亮的按钮,

TOP

假如我那套加密方案成功的话,有httpWatch也没有用.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:59985028

TOP

还是要靠adobe了……

TOP

用后台来保护swf

http://www.weni.cn/index.php?play=reply&id=47

这应该算是一个比较好的方法。

[ 本帖最后由 afa365 于 2006-10-19 22:56 编辑 ]

TOP

今天才看到这篇,迟来了啊
楼主的想法令我想到另一个方法。在同一个网页窗口中,两个SWF是可以进行通信的,那么不知道可不可以从一个SWF里调用另一个SWF里的语句呢?可以这样的话,加密就变得轻而易举了,不知道会不会异想天开
停止签名

TOP

引用:
原帖由 jimohuoshan 于 2006-10-15 10:31 发表
PS:我们寝室楼的变电站爆炸了,现在上网还要跑学校信息中心,郁闷!
这几天鲜见老兄倩影,难怪了
停止签名

TOP

引用:
原帖由 HBrO 于 2006-10-14 15:22 发表
ASV的能力不是你可以想象得到的.有了它,代码可是非常的危险.
现在的加密算法到底是什么原理我不是很了解,但是我做过js加密,按照道理,如果对代码进行混淆,变量替换等等这种简单而不可逆加密的话,asv这样的软件还能还原as吗????肯定是不行。因为加密过程是信息丢失的过程嘛。

那为什么风靡一时的诸多Flash加密工具都难逃asv5的魔爪呢?

不解。

[ 本帖最后由 HBrO 于 2006-10-20 15:16 编辑 ]

TOP

好想法,不过AS3实现起来行不?

TOP

把loadMovie进来的swf名字改成乱码

去掉扩展名或者换成.tmp

有可能逃过缓存

TOP