游戏加密处理

为了避免游戏上线后游戏代码被破解,一般我们都需要对游戏进行相关的加密保护
下边分享一下如果交大程度的保护我们的游戏。
1游戏主程序SWF的混淆处理。
为了最大程度的实现对游戏程序的保护,通常我们需要对发布出来的SWF文件通过一些第三的加密工具(doswf)进行相关的混淆保护.

2. 加壳保护
所谓加壳保护就是将主程序SWF分离出来,通过一个加载的SWF文件进行2次加载的保护措施。
当然单纯的这样分离操作,并不能起到很好的保护效果。因此通常的我们还会对已经混淆过后的SWf文件进行进一步的加密处理
该部分的处理通常就是将主程序SWF通过自己编写的工具进行二次的二进制级别的加密处理。加密过程主要通过一个密钥来实现还远。而加密后的主程序通常已经不再是SWF文件结构的文件了。它只是一个一定意义下的二进制数据文件

实现样的加密效果目的是通过一个密钥将原先正常的SWF文件结构给破坏。当然必须还可以通过这样的密钥进行数据的还原这个逆转过程是必须要实现的,不然我们无法通过自加载方式让壳来加载并还原我们的主程序SWF。

目的既然已经清晰了,剩下的关键就是怎么实现根据一个密钥来将文件进行加密跟还原。通常的做法是将该密钥转换为一个数字,然后在根据该数据对远文件的二进制进行偏移操作。还原则是一个逆反的过程。

大家可以参考下边的方式来实现上述过程

  1. //加密
  2. var bytes:ByteArray = new ByteArray();
  3. for(var i:int=0;i<ba.length;i++)
  4. {
  5. bytes.writeByte(ba[i] + 44);
  6. }//还原
  7. var bytes:ByteArray=new ByteArray
  8. for(var i:int=0;i<byte.length;i++)
  9. {
  10. bytes.writeByte(byte[i] - 44);
  11. }
复制代码

上边的例子只是较为简单的方式,而且消耗应该也比较高,更加高效点的方法,我们可以先将SWF为文件头去掉,然后在根据密钥对于的数组将文件裁剪为若干部分。还原的时候这样声明一个先的ByteArray 将文件头写回去,然后在根据密钥将数据进行还原即可,以为只是进行二进制数据的拷贝操作而不需要想上边的例子那样进行整个二进制文件的遍历操作,因此还原效率会有不少提升。


3.密钥验证获取
经过上边的操作后,大家应该知道加密使用的密钥是还原的关键,因为壳当中有相关的还原代码过程,因此如果不幸的我们的壳被的话密钥的获取将是我们最后一道防线通常的密钥的获取需要通过与服务器请求才能获得。但是如果只是这样的话,其实还是很容易就可以获取得到密钥的。比如抓包或者查看页面源码甚至直接抓获请求地址。为了解决这样的情况,我们还需要对验证码的获取添加一道工序 ,那就是验证码,验证码必须只能单次有效。使用过的验证码必须作废。这样的话尽管得到请求地址但是因为有了验证码的保护,密钥的返回将得到更有效的保护。

需要注意的是验证码不能以明码形式发送,需要用POST方式并且要适当的对密钥进行2次组合加密。

4。壳的混淆加密
最后我们需要做的就是对壳文件进行混淆处理。壳的加载我们还可以通过流的形式进行加载,这样壳就可以不缓存在浏览器内存当中了。

当然这样的加密流程虽然并不能保证绝对的保护,但是最少为源程序的破解带来了不少的难度。对于一些初中级别的开发人员已经有比较显著的效果了。

http://5aser.com/forum.php?mod=viewthread&tid=69&reltid=481&pre_thread_id=0&pre_pos=1&ext=CB

原文地址:https://www.cnblogs.com/chenhongyu/p/3003087.html