Flash 加密和破解

关于Flash(swf),咱们须要明确一点:算法

***Flash字节码的意义都是公开的 因此若是cracker真的有足够的耐心他最终仍是能够破解掉你的Flash。咱们能作的只是尽可能提升Flash被破解的门槛让cracker破解它须要消耗的时间大于本身更新版本的间隔就行了。工具

 

通常而言,对于游戏,无非是为了防止cracker修改游戏数据,制做外挂,固然也有人为了破解游戏,提取素材,提取音频,提取音乐等等。加密

如今Flash页游已经走下坡了,没多少人关注了,并且这种加密方案也比较成熟了。可是,正由于Flash小游戏不少,这里边大量的素材资源,也许就是很是不错的资料来源。对象

 

先简单回顾一下怎么作游戏的加密,防止破解或外挂:blog

 一、关键数据加密

适用防范对象
  使用内存修改工具妄图直接修改关键数据的初级cracker
原理
  关键数据不使用明文保存
具体作法
  对关键数据的存取使用AES或XOR等算法进行处理保证关键数据在内存中不以明文保存(作一个类用于存取,每次把数据取出后用临时变量作加密解密)

二、修改数据包

适用防范对象
  使用Fiddler等各类工具篡改回包或使用假数据发包的初中级cracker
原理
  加密数据包并在数据包里面加入防伪信息
具体作法
  对数据包内容进行简单的AES或XOR加密并在其中加入相似TCP/IP协议的Sequence ID先后台共同对数据包进行校验。

三、Flash初级加密

适用防范对象
  会用Flash破解工具破解以后尝试对Flash源码进行修改的中高级cracker
原理
  提升使用工具破解Flash以后读懂源码并进行修改的门槛
具体作法
  直接使用工具如DoSWF等对Flash的关键代码进行加密和混淆

四、Flash高级加密
适用防范对象
  没有足够的时间和耐心的高级cracker
原理
  使用各类恶心的技巧对本身的Flash关键内容进行保护
具体作法
  (1)对关键代码进行混淆 ——提升破解后读懂代码的门槛
  (2)将保有关键逻辑的main.swf以二进制形式嵌入到工程里在外层使用loader的loadBytes()方法进行读取并实例化 ——提升直接被抓包抓到关键SWF的门槛须要cracker解析文件二进制内容才能拿出来关键的swf
  (3)加载main.swf以前检测关键类是否已经被定义过而且将main.swf加载到与loader.swf不一样的ApplicationDomain ——防止cracker用preloader等方法事先定义关键类用来顶替main.swf中的同名关键类提升类替换的门槛(父程序域覆盖子程序域)
  (4)关于第2点,还能够把二进制作得更绝一些,例如把二进制加密了,而后再在程序里边解密,而解密程序, 又能够用Pixelbender来作(Pixelbender的破解又难了不少)。固然,最重要的是,必须先把loader部分混淆,让反编译软件没法直接获得可运行代码,这样cracker就失去耐心了。
 
 
好了,说完加密,那么如今这么多flash小游戏,破解一下,拿点素材来使用也是不错的选择。
反编译提取素材,固然要依赖于Sothink等反编译软件了,可是不少游戏的素材和主swf都以二进制形式嵌入的,这样对于sothink swf decompiler来讲是无能为力的。反编译出来只有这样的空类:
这时候须要本身根据swf格式说明,写个程序提取出对应的二进制数据,再用sothink来反编译。
相关文章
相关标签/搜索