【灯灯的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
- 【灯灯的Cocos2dx笔记】cocos2dx资源加密最简单的解决方案
- cocos2dx 图片资源加密
- cocos2dx 资源加密
- cocos2dx TexturePacker加密资源
- 关于cocos2dx手游lua文件加密的解决方案
- 关于cocos2dx手游lua文件加密的解决方案
- 关于cocos2dx手游lua文件加密的解决方案
- 关于cocos2dx手游lua文件加密的解决方案
- [cocos2dx笔记016]cocos2dx 3.2 的UserDefault
- cocos2dx 资源加载的问题
- cocos2dx遇到的BUG解决方案
- cocos2dx射箭等抛射物的简单解决方案
- cocos2dx 3.5 资源文件加密
- cocos2dx使用xxtea加密资源
- cocos2dx使用xxtea加密资源
- 【灯灯的Cocos2dx笔记】真正可用的cocos2dx全局定时器
- 一个最简单的cocos2dx-lua 演示说明
- cocos2dx 的简单动画创建
- Linux安装mysql
- 23种设计模式(20):责任链模式(二)
- 遍历map其中几种方法
- win上刷新去不掉
- 一大波有用的 bash 别名和函数
- 【灯灯的Cocos2dx笔记】cocos2dx资源加密最简单的解决方案
- Linux学习笔记
- c++Primer,五,表达式
- ubuntu VPN service failed to start 解决方案
- 零基础学习Mahout之一:导入特定的包
- 厄密多项式的实现
- 两个栈实现队列+两个队列实现栈----C++
- 操作系统时间被修改导致ORA-01075和ORA-00600[2252]
- Scanner与BufferReader的区别