【灯灯的Cocos2dx笔记】cocos2dx资源加密最简单的解决方案

来源:互联网 发布:钢铁雄心4mac汉化包 编辑:程序博客网 时间:2024/06/05 05:52

首先声明,这个方法思路很简单,破解起来估计也很快,适合要求比较低的新手朋友们一起使用。


【思路】

1.在程序发布之前,把所有图片用自己写的方法加密,加密采用读取字节流,然后修改一定的字节,再另存为,这个图片就无法正常预览了,这样起码能阻止小部分盗图者。

2.程序中修改cocos2dx源码,设置一个开关,方便有些不需要加密的程序无需再次修改源码。开启开关后,cocos2dx读取资源的时候逆向解密


【加密资源】

我自己用C#写了个小工具,把文件夹拖进去就会自动遍历所有图片,然后就可以加密。加密方法我只采用了最简单的加减法,哈哈,要求比较低嘛。

这个工具的源码我放在了GitHub,我第一次使用GitHub,不太会用,哈哈,英文比较水,大家可以去下载源码:

https://github.com/winterfeel/ImgEncoder

代码我都加了简单的注释,软件比较简单,大家可以自己改。


【修改cocos2dx源码】

然后就是修改cocos2dx源码,我的是2.2.3。3.x的估计差不多吧。。。

在cocos2dx-2.2.x\cocos2dx\platform

在文件 "CCFileUtils.h"
中加入如下代码:

bool ifEncoded;//解密开关const char *_key;void setKey(const char *key);




在文件 "CCFileUtils.cpp"的 init() 方法中添加如下代码:

ifEncoded=false;//默认不开启解密


再新增一个新的方法,设置秘钥

void CCFileUtils::setKey(const char *key){    ifEncoded=true;    _key=key;}


最后就是最重要的,在读取文件数据函数里面添加解密方法:
在 getFileData 方法的 "return pBuffer;"前面加上:

if(ifEncoded){for (int i = 0; i < 16; i++)      {          buffer[i] -= _key[i];      } }

最后,在你的游戏中, AppDelegate.cpp的 applicationDidFinishLaunching() 方法中加入:

CCFileUtils::sharedFileUtils()->setKey("000000000000000");

即可进行解密


【总结】
这个仅仅是我个人使用的最简单的加密实现方式,因为找遍了百度也没找到什么合适的方法,要么太难,要么有局限性,只好自己写个简单的方法玩玩了。测试了下,在安卓和ios下都可以成功。主要还是提供给大家一个思路,至于具体的加密方法,各式各样大家自己发挥吧~哈哈,有什么问题,或者我写的有什么问题的大家都可以留言!


----灯灯






1 0
原创粉丝点击