cocos2d-x 对引擎修改,以实现加密资源

说点啥呢,直接进入主题吧~

1、首先声音文件是不能加密的,为什么呢?研究发现android端对它的调用是直接取的地址,不是数据内容,所以懒得进一步做平台适应了。

2、其次,别的都是可以加密的。至于怎么加密嘛?网上一大堆算法,这里就不提了。我第一版采用的是最简单是字节位加密,原理就是对字节进行一次换算加密,例如

: string a = "1234"; a[0]^=0x11;那么字符串中的1就被加密了,解密就是再执行一次a[0]^=0x11;具体就不多说了,自行百度一下更清楚。

3、接下来最重要的当然是怎么对cocos2dx修改了。这里暂时对2.x的版本进行修改说明,至于3.x也是一样的原理,大家自行修改说明吧。打开CCFileUtils.h文件,在类内加入


CCDictionary * m_pResData;
public:
void initReadRes(const std::string& file);

这段代码,然后打开CCFileUtils.cpp文件,加入

bool CCFileUtils::init()
{
    m_searchPathArray.push_back(m_strDefaultResRootPath);
    m_searchResolutionsOrderArray.push_back("");


m_pResData = CCDictionary::create();
m_pResData->retain();

    return true;
}
void CCFileUtils::initReadRes(const std::string& file)
{
CCString *pTemp =NULL;

这里是对file文件进行解密,并将对应的文件路径名(完整路径)与文件内容存入字典m_pResData中

m_pResData->setObject(pTemp, key.c_str());

}

打开cocos2dx\platform\android下的CCFileUtilsAndroid.cpp,增加android 端的设配,这里只对两个函数进行处理doGetFileData跟isFileExist,

在doGetFileData修改为

string fullPath = fullPathForFilename(pszFileName);
CCString * pData1 = (CCString *)m_pResData->objectForKey(fullPath);
 if (pData1)
{
*pSize = pData1->length();
pData = new unsigned char[*pSize];
memcpy(pData, pData1->getCString(), *pSize);
}
else
 if (fullPath[0] != '/')
    {

打开cocos2dx\platform\ios下的打开CCFileUtilsIOS.cpp,增加IOS端的设配,这里只对1个函数进行处理sFileExist,

在isFileExist内修改为

CCString * pData1 = (CCString *)m_pResData->objectForKey(strFilePath);
if (pData1)
{
bFound = true;
}
    else
if (strFilePath[0] != '/')
    {

这里的修改就完成了

4、使用时,在资源加载的地方加入CCFileUtils::sharedFileUtils()->initReadRes("code.dat");这样使用时,如果有解密后的数据,那么引擎优先读取的就是你解密数据了。我这里是将所有的资源压入一个文件内,并设置好了对应的文件路径。

5、结尾,其实对应真正会破解的人,这并没什么卵用,所以,只是防止一些低手而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值