返回列表 回复 发帖

关于flash加解密

本帖最后由 askforone 于 2010-2-4 15:00 编辑



因为身体有乙肝病毒在肆虐和其他一些问题。以后可能不继续研究和发表flash方面的东西了,最后分享点东西。


本文主要讲一些flash加解密的知识,并不鼓励破解flash文件。经过一段时间的研究,目前本人能破解90%左右的flash加密,对于flash网络游戏(非简单的网页游戏),分析了现有过的很多网络flash游戏,包括一些作者的DEMO,可以复制刷钱或写脱机外挂的,是100%
希望大家了解一些解密方面的东西,对自己的心血好好保护。最好的方法就是完全不给,一旦作品发布,必须做好被人破解的准备。另外,无论何时,不是技术相当人之间的交流性质的话,不要发论坛短消息或邮件和我讨论这一话题。


Q1:为什么要破解flash文件
我认为目前有五种性质:
是通过破解别人的文件,了解别人的编程思路,进行模仿或学习
汉化优秀flash软件,游戏,让大家分享。或因为游戏设置不平衡,改部分参数,如xxxx百倍经验值版等等。
一些小公司,仅仅通过将别人的作品,改头换脸,把自己的标望上面一打。
一些个人,行为同上。
通过flash破解,来了解flash加密技术。

而为什么加密,基本上原因就只一种,保护自己的心血。

Q2:怎么才算是破解了
Q1,我们也可以这么分
反编译出大部分代码,尤其是核心代码
需要得到所有的字符串,参数的修改
这是最无耻的,什么都破解的了。因为不需要完整破解,很多加个读取的壳可能就能加水印了。
同上
此类基本同一

Q3:加密的总被破解了,再没什么加密是安全的了吧?
Swf的文件格式,现在已经是透明的了,很多人,人云亦云的说,因为flash文件格式的透明,flash加密总是会被解开的。此说法完全没道理。
不过flash是脚本语言,它不能自己运行,必须要flashplayer或类似的东西进行解释,所以不管怎么加密,你必须保证flashplayer仍然认识它。
Q2
如有些方式的加密,反编译后可以生成伪码,而且伪码也能运行,但是人看不懂,不能修改。这也能算加密成功。但是只要让flash变成既可以运行,但是又不是人可以看懂的代码,太难。目前见过几个混淆可以达到这种效果,方式不详。
有些方式的加密,用软件完全反编译不能。手动也非常辛苦,最后得不尝失,即使破解了,也不方便修改。即使破解了一个,也不一定能破解同样方式的第二个。这也算成功了。Doswf基本做到了这一点。不过doswf太能损坏文件了,且试用版水印+弹窗,我并不建议大家使用。
基本上,目前主要就用swfEncrypt直接加密了,要么自己想办法,自己写。最好的加密是把文件格式变成exe,用别的软件给它加壳。Exe加解密技术成熟得多。但是缺点是,大家都是要的网络上能流通的swf啊。

Q4:怎么加密?
Flash,现在主要就分动画和程序。
Swftag标签格式的文件,支持的标签也并不多。而flash中的库,是暴露在最外面的,自身完全无法加密。要保护动画,必须要加loader的壳。
action部分,支持很多指令。Opcode其实和汇编码没多大区别。(另外这里插一句,有些人断章取意的认为alchemy能让flash执行效率高N倍,也没道理,如果看过官方的详细说明,外加avm2的说明的话,就应该知道,大多abc只是转换成了flash本身支持的opcode,极少数为avm2额外的专门的解释器,alchemy的出现,最多是为了方便别的平台的程序员而已,不久以后可能我这观点也行不通了)。因此,action部分能做很多文章,而市面上的加密软件也多是在这部分上动脑筋。你也可以写个loader,配合改一些动画swf的数据。然后加密as部分的loader来达到加密动画的目的。
不过现在,商业气息太浓,产品没测试好就拿出来卖了。真没想到5个小时不到就能把swfEncrypt6.04完全搞定。即使因为没读完avm2tag及一些debugtag而不能完全还原成源码,也能轻松的注入自己的指令到加密后的文件中,能修改,也能删除。

Q5:解密需要些什么?
解构的头脑,对代码的熟悉,外加大量的猜码运气。
其实大多flash也没怎么加密的。一般用软件可以直接反编译。
swf8及以前,swf9swf10tag上有很大不同。我也没研究透彻,主要讲下之前的。Swf8及以前的是用avm1解释,swf9如果包含byteArray asset的,和swf10基本可以视为一致。因此建议as3加密时,即使你用不上,也把byteArray,bitmapdata,loader类导入进去,在原先代码基础上,间接插上垃圾代码。Swf9swf10本身的废话部分也比swf8及以前多多了,本身破解难度要高一些。

目前市面上这些解密的软件,由效果大小来排
Swf10方面
闪客精灵,WINHEXtamarin相关工具,nemo
Swf9方面
闪客精灵,ASVWINHEXtamarin相关工具,nemo
Swf8方面
Asvflasm,闪客精灵,WINHEXflash游戏修改大师

另外,如果是要破解游戏,必须还有一款用得熟练的游戏修改软件。最近不知道有什么新的好,我用习惯了GameExpert,虽然功能很少。网络方面,还得再加WPE(这软件忒久了,,以前自己做星际和传奇的简单外挂就用的它,功能也不怎么样,就没发现换代的东西)

至于什么flash吸血鬼,URLEDITORUE用处不大,flash橡皮插偶尔还能一用。
基本上,软件是对于新手破解用的,这在Q1里面,新手一般是
这类人。闪客精灵和WINHEX因为功能强大,基本无可替代。而其他的,高手必须得有能力去写软件,去帮助你完成这些活。


Q6:flash可以动态修改?
很多人都试图用金山游侠修改过flash游戏,结果没人修改成功,实际上因为现在很多游戏都开始采用动态内存,所以基本上金山游侠这类软件改不了。Flash可能是网页上最早采用防护动态修改的技术了吧。
我以前成功过好几次,理论上来讲,基本上所有程序都是调内存里再运行,像flash,基本上和flashplayer一起装内存里运行。所以改内存绝对是有效果的。只是flash数据和很多dos,win下面的游戏数值表示方法不一样,因为动态内存,位置也总跑,用金山游侠基本很难找到。
不过现在有flash游戏修改大师这一工具,as2的游戏算是不需要费脑筋去想数值存在哪,在哪个范围跳来跳去,用什么方法锁定它们而不至于死机。
游戏人只是因为游戏难度过大想修改,建议直接用flash游戏修改大师,就此打住。

Q7:swf如何加密才比较容易防止破解呢?
其实上面也提到过一些,一个成熟的加密:
1 加壳,一定要用URLLoader+ByteArray读一次
2 读这一次的过程中,可能会用到某个算法,这一算法一定不能每次一样,可以随机生成。而密匙完全可以以另一种算法,加密后放在同一文件中。比如说先读某几个bytes来知道是什么算法,再整个的解密。密匙藏法太多了,我另有一篇文章有相关的内容,目前还未发表过。
3 大量改方法名,所有都改,让破解者很难猜。改法也完全可以随机。
4 手动改跳转和push命令部分。Pushjump历来都是加密用兵之地。目前我也没摸透什么改法可以让最新闪客精灵和asv完全挂掉。所有加解密软件都是很规矩的读tag数据的,flashplayer有点不同。因为这个,所以一个用某软件加密过的swf,不可能再被另一个加密软件再加密了。可以视为后一个加密软件没能力解读之前的加密。(这方面具体的我又写了一篇文章,也暂未发表,很早以前看过有个老外写过很多,有人翻译了,可以网上找找看。记得那里面提到的方法已经对现在的闪客精灵无效了,不过很有启发。)
5 加无效代码进去。无效代码基本是if之类,不怎么拖速度。目前只发现几个加密swf能够在真实代码之间插进大量无效代码。而大部分都是加在头和尾。。。和没加密没什么区别。
6 死循环!一个让除了flashplayer外,所有加解密软件都挂掉的死循环。这招算比较狠的,不过好难啊,改jump也能产生这种效果,不过多半是flashplayer也挂掉,基本只能手动不靠批量,太依靠运气。

Q8:怎么算是加密成功了?
Q2:
首先得让asv,闪客精灵完全捕捉不到真实代码的影子。
能隐藏库元件的话,加分!
闪客精灵和asv在反编译时挂掉了
手动分析发现,代码太多扰码。好不容易解读后,发现只是能达到效果的伪码,却不能还原成原始代码。
只能完全手动分析,太耗时,放弃

基本上,一个加密至少要达到第四点才能算是成功了。如果你找到了办法使你的swf可以让闪客精灵和asv挂掉,恭喜你。之后想办法在中间加大量的无效码吧。这样如果不是很严重的利益驱使,你的swf就没人能破了。
hi.baidu.com/inuko  
现在还没有涉足这块儿
支持楼主!
希望楼主能早日康复。
近段有报道说久坐对身体损害很大,各位爱好写程序的好好保重吧。
支持楼主。
关于让精灵和asv同时挂掉比较困难,希望楼主能交流下反精灵的办法。
附上挂掉asv的办法。
本帖隐藏的内容需要积分高于 15 才可浏览
已转战天地会www.9ria.com
支持,高人的东西我还看不到。
难怪上次你发的那个,还有段
gotoAndStop(xxxx)
我看这个数值太大,而影片不可能有那么多,断定是伪码所以回贴时没写出来。
不过我基本上不用asv,没测试过asv是否会挂掉。但是这一段代码手动的话,肯定会以为是无效码而直接删掉。我在这种伪码多的地方基本是把swf文件重组再来反编译。

而你提到过的
因asv特性为所有jumpto亲自走一次,asv挂于此。
这一特点因为我用asv不多,所以我也没发现。

最难的是过闪客精灵,老实说新版的闪客精灵,as2我没看到能当住闪客精灵的,只能用伪码和无效码加密,对稍有经验的破解者来说,是没用的。
hi.baidu.com/inuko  
郁闷,还没写完,现在写的也只发布了一部分,怎么就被转载了。
hi.baidu.com/inuko  
...
不想被转就学本人设个权限了-_-
已转战天地会www.9ria.com
被转是好事,呵呵
第一次起来这么早,兴奋一下,呵呵
首先我用最真心的祝福,祝楼主:早日康复,希望还能在今后的flash学习道路上有楼主相伴!
再次还有谢谢“Cl@rke将军 ”大虾,我从你和“终极讨厌”大虾哪学到了很多东西,也得到你们以及大家的支持,我才一直坚持学习flash到现在,虽然我还只停留在flash的简单运用基础阶段,但因为有你们我在学习flash道路上一点都不寂寞。
最后再次谢谢两位大虾和所有热爱flash的朋友们,祝:大家虎年吉祥,身体健康,合家幸福!
来转一下,学习一下
我一留言 帖子就会被删 到底是谁干的!几个意思
楼主真不错
祝楼主早日康复!flash路上有你作陪不寂寞!
祝楼主早日恢复健康!祝所有的朋友幸福吉祥!
不错的帖子··帮助很大,愿楼主早日康复~!
被转是好事,呵呵
第一次起来这么早,兴奋一下,呵呵

闪侠158 发表于 2010-2-6 06:23
是呀。呵呵
好资料值得学习!!!
这贴可以沉了。这琢磨透了可以搞定09年前所有的加密,也可以防住那时所有的破解。
时代不同的,有个别新的非软件加密我觉得是不能完美反解出来的。
hi.baidu.com/inuko  
谢谢LZ分享~
学习了,因为作品都很小,也不涉及什么business,所以很少关注过这个加解密的问题,今天算是大开眼界了~~~谢谢LZ
好资料值得学习!!!
返回列表