admin管理员组文章数量:1639832
cocos creator 没有对资源进行加密,打包的资源很容易被扒,需要自己实现一套加密方式。这里简单记录下我使用的加密解密方法。只适用手游 native!!!
加密
- 加密算法: XOR
- 时机:在资源压缩打包完成之后
- 加密工具: python脚本
def encrypt(content):
"""
加密内容
:param content: 加密密的字符串
:return: 加密之后的字符串
"""
... #此处省略非关键代码
for i in range(len(content)):
c = content[i]
k = KEYS[i % cnt]
res += chr(ord(c) ^ k)
return res
伪代码,不能直接使用,这里的加密算法可以随意写,只要在C++层,创建图片之前能还原就行,比如,仅仅是把头几个字节放到最后去,只要能还原数据就行
加密完整之后按正常流程打包即可。
解密
在资源使用之前,需要进行解决,修改对应资源处理的方法,比如图片 CCImage.cpp:
static bool isEncrypted(const unsigned char * data, ssize_t dataLen)
{
if (dataLen <= ENCRYPT_SIGNATURE_LEN)
{
return false;
}
return memcmp(ENCRYPT_SIGNATURE, data, sizeof(ENCRYPT_SIGNATURE)) == 0;
}
static unsigned char * decrypt(const unsigned char * data, ssize_t dataLen)
{
unsigned char * out = const_cast<unsigned char*>(&data[ENCRYPT_SIGNATURE_LEN]);
for (ssize_t i = ENCRYPT_SIGNATURE_LEN; i < dataLen; i++) {
out[i - ENCRYPT_SIGNATURE_LEN] = data[i] ^ ENCRYPT_SIGNATURE[i % ENCRYPT_SIGNATURE_LEN];
}
return out;
}
...
bool Image::initWithImageData(const unsigned char * data, ssize_t dataLen)
{
bool ret = false;
do
{
CC_BREAK_IF(! data || dataLen <= 0);
unsigned char* unpackedData = nullptr;
ssize_t unpackedLen = 0;
// decrypt
if (isEncrypted(data, dataLen)) {
data = decrypt(data, dataLen);
dataLen -= ENCRYPT_SIGNATURE_LEN;
}
...
} while (0);
return ret;
}
2020/120/20 更新
加密工具
持续有人找我,希望我帮忙做一个拿来即用的加密工具,他们愿意付费。秉承着 “我可以教你怎么做,但我不会帮你干活儿” 的原则,一直都没做。最近发现,很多找到我的老板并不是技术,这个活儿只能我帮忙干了。工具目前已经写好,有 mac/win 两个版本,需要的可以找我。 不提供源码,需要源码的自己写,免费提供指导。
1 工具目录如下:
mac 版
win 版
2 使用方法
构建时,建议选择 default 方式,然后修复 config.json 文件:
{
"assets": "root/jsb-default/res/raw-assets/",
"cocos2dx": "root/jsb-default/frameworks/cocos2d-x",
"password": "password123"
}
- assets:构建之后的图片资源文件路径
- cocos2dx: 构建之后的 cocos2dx 目录的路径
- password: 加密密钥,由字母和数字组成,最短6位
3 加密结果
开发过程还是跟之前一样,没有任何影响:
构建完成之后,运行加密工具,然后再打包 apk 或 ipa,加密之后的资源:
游戏运行:
有任何问题可以联系我:
- Q群:830756115
- QQ:823336709
- 微信:xulidong_china
版权声明:本文标题:cocos creator 图片资源加密 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729296172a1194746.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论