对swf加密流程
作者:netice 来自 4Yue.net
现在webGame越来越多,很多游戏都是flash开发。而swf本身的开放格式决定了其被破解的命运。
面对被破解,然后游戏出现作弊这些行为,flasher如何应对呢?目前业界众说芸芸。我也只是说下个人建议。
1 首先对代码进行混淆
A 如果你很牛逼,可以自己写个混淆工具。其实原理很简单,就是对 类名、变量名的替换。
如果你正则学的不错,或者算法写的可以话,实现这个不困难。
替换名字可以通过:KEY-VALUE这种模式,也可以通过MD5变量名(最好在前面加英文 咱们的程序不接受数字开头的定义)
B 如果你是个懒汉的话,可以使用别人的混淆工具,目前网上很多,有收费的,也有免费的。例如:DoSWF
理论上这些混淆操作是不可逆的。(做好代码备份哦)
2 对核心文件进行文件可逆加密(通俗点就是把 main.swf这种文件,按照字节流加密改变成 main.xyz ---不是单纯后缀改变哦)
A 首先可以通过JAVA或者AIR 或者 Alchemy 这些技术对文件加密
B 加密后用 load.swf这正常的swf进行加载二进制流文件 main.xyz ,
C 通过进行load.swf内部函数或者通过加载Alchemy文件函数解密还原成main.swf
D 最后用loader添加到舞台使用。
以上可以看出一个破绽,就是 load没有加密,所以破解者可以得到解密的过程,建议把load混淆的厉害点,多写点无用代码吧。
破解者可以通过load自己本身的解密过程获取到解密后的 main.swf (高手可以直接从内存中获取),然后再破解main.swf文件。
当然main.swf其实也是被混淆过的文件,所以看起来会比较费劲些。如果真心想破还是能找到他想要的东西,例如一些协议的封装过程什么的。然后再做游戏外挂-----赚钱。
如果能从源头上解决这个问题可能会好些:如何让外挂赚不到什么钱或者很少。(这些是策划想的问题哦)
最后附带个小例子:
用JAVA 把swf文件异或下,然后再用load的函数去还原
本文固定链接: http://www.4yue.net/post-22.html
发表评论