请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 14409|回复: 62

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

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-14 14:40:39 |显示全部楼层
说出来,好像有点异想天开的感觉.因为我现在想的是将来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保护了.加密算法是后台使用的,不会放到网上.

这些就是我闲时无聊想到的,没什么理论支持,大家如果对我这异想天开的东西有什么意见的,狠狠地批一顿吧.
西部数码顶级域名注册商39元抢注!

得失

银牌会员

帖子
677
体力
2573
威望
1
发表于 2006-10-14 14:48:58 |显示全部楼层
这个想法挺有意思的。
我对第三步有疑问,就算能把解密工作完成,那么如何把二进制代码还原成swf呢,as3本身有这个能力吗
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-14 15:07:16 |显示全部楼层
所以我才说没有把握嘛.

使用道具 举报

小小菜鸟

钻石会员

帖子
3095
体力
10742
威望
0
发表于 2006-10-14 15:19:49 |显示全部楼层
用代码写已经很安全了,

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

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

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-14 15:22:53 |显示全部楼层
ASV的能力不是你可以想象得到的.有了它,代码可是非常的危险.

使用道具 举报

小小菜鸟

钻石会员

帖子
3095
体力
10742
威望
0
发表于 2006-10-14 16:02:04 |显示全部楼层

回复 #5 HBrO 的帖子

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

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-14 16:05:11 |显示全部楼层
他的文件代码应该不是很复杂,给成功加密了.

使用道具 举报

Kirua 
帖子
34
体力
56
威望
0
发表于 2006-10-14 16:06:53 |显示全部楼层
倒是擔心,如果Flash Player/Flash 檔案本身(特別是二進制數據)就是安全隱患的話,加密會不會變成幫兇
而且效率方面呢?
說不定未來甚至有動態解密(因為如果需要播放,始終都是要解出來),只要理解Flash Player如何解讀代碼就好了(雖然這不是很容易的事情)
另外,多平台兼容性方面如何呢?Linux好似未必可以跟得上吧?如果其他平台播放不了,這樣會有意義嗎?

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

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

使用道具 举报

帖子
80
体力
315
威望
1
发表于 2006-10-14 21:09:22 |显示全部楼层
除非开发一套自我解释的编码算法,否则这种加密没有意义,那个很小的loader剪辑的加密过程是暴露的

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-15 01:28:08 |显示全部楼层
如果二进制可以攻击人家的话,就危险了.

至于那个loader,我是基于当前加密软件SWF Encrypt的特点想出来的,可以很好地保证不给暴露.

使用道具 举报

xxwei 

雨飞

金牌会员 手机认证 

帖子
994
体力
4352
威望
49
居住地
美洲 美国
发表于 2006-10-15 01:43:38 |显示全部楼层
hbr可以写一个关于二进制应用的的教程吗,或者给点资料
对此比较模糊,只知道数值的二进制转换. BCD码之类的.

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-15 01:54:11 |显示全部楼层
我还没开始学AS3,二进制只是以前用VB玩过的东西.

使用道具 举报

寂寞火山

荣誉管理 手机认证 

帖子
2584
体力
10205
威望
197
发表于 2006-10-15 10:31:38 |显示全部楼层
我很多时候加密没把别人加昏,反而把自己加昏了,现在索性都不加了,直接开放源文件好了

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

使用道具 举报

帖子
80
体力
315
威望
1
发表于 2006-10-15 10:47:28 |显示全部楼层
原帖由 HBrO 于 2006-10-15 01:28 发表
如果二进制可以攻击人家的话,就危险了.

至于那个loader,我是基于当前加密软件SWF Encrypt的特点想出来的,可以很好地保证不给暴露.


Mmm,这样说的话还是可行的。而且不会影响到速度。swf文件仍然是IE可以是别的MIME会被加载到缓存,但是对一般用户是不能读取的。只能使用loader这个环境。虽然增加了编程的复杂还是划算的。

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

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-15 13:39:38 |显示全部楼层
今天做了一个加密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重写估计会很有希望.可惜的是,现在我在解密播放的过程里,要生成一个中间文件存于硬盘,尽管我加载后马上删除,但是,如果在网上模拟这一过程,该文件将不能从缓存中删除.所以,如果能把二进制数据不存在于硬盘,而存在于内存,就好了.

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-15 14:15:17 |显示全部楼层
下载地址:
http://download.incoo.com/blueid ... enc_flashplayer.rar

[ 本帖最后由 HBrO 于 2006-10-15 18:05 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-16 23:26:07 |显示全部楼层
自己顶一下.

使用道具 举报

对酒当歌

银牌会员

帖子
436
体力
2602
威望
3
发表于 2006-10-16 23:41:52 |显示全部楼层
楼主讲的很好!赞一个!

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

使用道具 举报

帖子
129
体力
462
威望
0
发表于 2006-10-18 17:47:42 |显示全部楼层
大家知道有个IE插件叫 HttpWatch 吗,我想从名字就能看出来,只要通过http协议加载的页面内容,他就能显示出来!用它得到并下载swf文件很容易的!

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


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

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-19 17:45:17 |显示全部楼层
就一个识别URL咯.

使用道具 举报

帖子
129
体力
462
威望
0
发表于 2006-10-19 17:51:22 |显示全部楼层
原帖由 HBrO 于 2006-10-19 17:45 发表
就一个识别URL咯.


哦?是吗?我还试图破解过的!大意了,大意了!呵呵!
至少推荐了个软件给大家下载Flash用啊!
我再破解试试看!

使用道具 举报

afa365 
帖子
53
体力
175
威望
0
发表于 2006-10-19 22:32:16 |显示全部楼层

看看这个是什么加密原理

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

使用道具 举报

HBrO 楼主
帖子
7398
体力
32121
威望
241
居住地
广东省 广州市
发表于 2006-10-19 22:37:01 |显示全部楼层
假如我那套加密方案成功的话,有httpWatch也没有用.

使用道具 举报

帖子
23
体力
111
威望
0
居住地
福建省 福州市
发表于 2006-10-19 22:37:20 |显示全部楼层
还是要靠adobe了……

使用道具 举报

afa365 
帖子
53
体力
175
威望
0
发表于 2006-10-19 22:54:16 |显示全部楼层

用后台来保护swf

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

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

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

使用道具 举报

朱高

银牌会员

帖子
761
体力
3372
威望
69
居住地
浙江省 杭州市
发表于 2006-10-20 11:58:56 |显示全部楼层
今天才看到这篇,迟来了啊
楼主的想法令我想到另一个方法。在同一个网页窗口中,两个SWF是可以进行通信的,那么不知道可不可以从一个SWF里调用另一个SWF里的语句呢?可以这样的话,加密就变得轻而易举了,不知道会不会异想天开
停止签名

使用道具 举报

朱高

银牌会员

帖子
761
体力
3372
威望
69
居住地
浙江省 杭州市
发表于 2006-10-20 12:03:54 |显示全部楼层
原帖由 jimohuoshan 于 2006-10-15 10:31 发表
PS:我们寝室楼的变电站爆炸了,现在上网还要跑学校信息中心,郁闷!

这几天鲜见老兄倩影,难怪了
停止签名

使用道具 举报

ahuaxz 
帖子
116
体力
462
威望
0
发表于 2006-10-20 13:53:04 |显示全部楼层
原帖由 HBrO 于 2006-10-14 15:22 发表
ASV的能力不是你可以想象得到的.有了它,代码可是非常的危险.



现在的加密算法到底是什么原理我不是很了解,但是我做过js加密,按照道理,如果对代码进行混淆,变量替换等等这种简单而不可逆加密的话,asv这样的软件还能还原as吗????肯定是不行。因为加密过程是信息丢失的过程嘛。

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

不解。

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

使用道具 举报

帖子
169
体力
818
威望
0
居住地
重庆市 江北区
发表于 2006-10-20 15:16:19 |显示全部楼层
好想法,不过AS3实现起来行不?

使用道具 举报

病态天使

钻石会员 手机认证 

帖子
7094
体力
17339
威望
311
发表于 2006-10-20 16:20:58 |显示全部楼层
把loadMovie进来的swf名字改成乱码

去掉扩展名或者换成.tmp

有可能逃过缓存

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 12:17 , Processed in 0.144993 second(s), 10 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部