Flash中的保密问题

最近公司的游戏出了外挂,跟之前的外挂不同,这个外挂直接模拟用户请求,从服务器端来看,它就是一个“正常”(没有antispam的情况下)的用户请求。当然我们可以写一系列的antispam策略来识别这些模拟的用户行为,但是这样做的代价比较大,而且就成为一个攻防战了。而实际上我们的所有请求都是带有时间戳的checksum的,URL不能随便被伪造和重复利用的。但是这个外挂的出现是因为它知道了我们的checksum算法,而实际上我们有checksum算法的这部分代码是放在一个混淆过的swf里的。但是很可惜的是,vampire可以将内存中的swf提取出来通过asv反编译,根据测试的结果,那部分checksum代码赤裸裸的暴露了。那么怎么办呢才能隐藏或者说加大破解checksum代码的难度呢。我对于flash不熟悉,但是以前搞过java,大家都知道java如果要加密jar文件的话,可以将jar文件加载,然后用自己的classloader在读取jar之前解密。这部分加解密的东西可以用jni来做。那么flash有没有类似jni的东西呢?结论是:有。一个叫alchemy的东西可以有限度的支持c,c++和flash的集成,它实际上是支持flash去调用c和c++的代码。这样一来就简单多了,把checksum函数用alchemy重新实现一下,把原始字符串用自己的一些算法扰乱,然后再用一个不可逆的hash算法,比如md5计算之后,再把结果给出。经过实验,这样生成的swc即使反编译出来也几乎是汇编代码,可读性很差,而且有些地方甚至反编译不出来。

你可能感兴趣的:(算法,ClassLoader,jni,jar,解密,Flash)