swf破解-swf内存读取法 去除加壳swf

前言:之前作了两个swf加壳试验
http://flash.9ria.com/thread-44239-1-1.html
http://flash.9ria.com/thread-45096-1-1.html ,
全被flash023用内存抓取法破掉了.没料到内存抓取工具已经被使用得这么普遍,
虽然还没sothink那样泛滥.今天干脆普及一下内存抓取工具的使用.
一是为了让两次小实验有个结局,二是给使用加壳的人们题个醒-内存抓取工具已经开始大行其道,希望以此激励高手们发展防内存抓取的技巧.

首先, 加密只是防止被人看到源代码的方法,而并不是保护自己著作权的方法.真想要保护自己的权利,应该加的是lisence而不是加密(当然在一个无视作者权利的环境下,这只不过是一句空话).
但是,我仍然认为所有代码可以并且应该完全公开,因为真正值钱的东西是原理,是服务,是文档,是技术支持,而不是那一堆只有机器能看得懂的代码.
不管怎么样,我希望大家都能自重,之前的奥运福娃游戏可以说地丢尽了大家的脸(直到最近还有人拿那件事情大做文章).

其次, 衷心感谢flash023,askforone等朋友们的热心回复与帮助.

言归正传,以我的第二次加壳文件破解为例:
此加壳要想通过用直接反编译源代码,用as3层层去壳的方法破解,恐怕只有神仙能做得到.
但如果使用正确的工具,只不过是点几下鼠标的功夫而已.

推荐工具:
1.asv2009 (action script viewer,根据我的经验,比sothink那个不中用的东西强了不知多少倍
这里还要感谢deepin3000提供试用:http://www.deepin3000.com/blog/index.php/archives/306 )
2.swf窗口吸血鬼 (不再推荐使用,推荐更好用的工具swf reader 请见下面更新 )
(不要当成flash吸血鬼,flash吸血鬼基本就是个废物,
swf窗口吸血鬼,可以将运行时flash内存中全部的符合swf格式的ByteArray保存出来,
可以从内存中提取我的破壳后原始swf,
30天试用下载:http://www.swfvampire.com/
当然,如果有更好的内存抓取器,欢迎大家提供)

好了,下载安装好两个工具,下面就是大展身手的时候了:
到这个主题的顶楼下载加壳swf附件encrypt_test2.swf
http://flash.9ria.com/thread-45096-1-1.html ,
作为第一个试验品.
使用flash player 10 运行swf,显示如下(速度可能有点慢,中间经过多次去壳):

运行SWF窗口吸血鬼,点击window list框,选中Adobe Flash Player 10, 点击suck now,结果如下:

依次delete掉前三个Main Movie,再open Empty SWF Movie 7.swf,发现,这正是去壳后内存中的原始swf.

由于试用版swf窗口吸血鬼不能保存swf,这该怎么办?没法用asv看源代码啊!
别急,点击flash player文件-创建播放器,另存为”原始.exe”不就保存下来了(感谢mbr提供方法)!
不过,这样保存下来的是exe格式的,但这可完全难不到asv,直接将exe拖入asv图标上,asv会自动搜索exe中的swf,
显示如下:

open第5个swf,
被保护的代码一览无余:

哈哈!
最后祝大家新年快乐!
再贴一个东西,有兴趣看一下:(感谢mbr)
new_test.swf (94.71 KB, 下载次数: 94)

更新:
一个更好用的内存提取工具 http://www.swf-reader.com/
(demo版可以无限制保存swf,而且可以过滤搜索swf:
http://flash.9ria.com/thread-46123-1-1.html )
简单教程(swf内存抓取):
1.到http://www.swf-reader.com/downloads.php?cat_id=2 下载最新demo,
2.解压文件,双击运行SwfReaderDemo.jar(需java支持,choose mode normal就可以)
3.用flashplayer运行加壳swf附件encrypt_test2.swf
4.file->Load swf from memory, process选择flashplayer.exe, Find swfs-> save swfs as…
另外,这个东西据说可以秒杀目前几款主流加密工具( SWF Encrypt,DoSwf,SecureSWF)。
总之,目前任何swf加密都难保证可靠性。
另,上面附件是一个”重口味”的加密swf(加了三层壳,混入大量马甲,修改了变量名),
没有实用性,有兴趣可以下载用swf-reader 试验一下。
看来加密还是混淆比较靠谱,有时间再总结一下as3代码混淆的方法…

 

 

 

//分割线======================================================================

 

现在很多flash应用在发布时实际都没做client文件安全这方面的工作。有些人可能认为一个项目做大了,其项目结构就算项目组成员还要理解半天,更何况破解之后的代码阅读呢?

 

其实我觉得的不管是加密或者是混淆还是要做一下的,人家破解了你的客户端想直接在编译成swf文件的人并不多,更多的只是想看一看里面关键的算法和实现方 式而已,有点的时候说不定会意外发现server端协议漏洞。 就世面上的一些web game 我做过一些研究,他们都只是做了一些简单的加密而已,平均我半天就能破解一个,并能拿到其client的所有源代码。



发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(Spamcheck Enabled)