目前市面的Cocos2d-X游戏,一般分为C++、Lua、JavaScript三种编程语言,目前我们使用的是Cocos2d-x-3.16 + lua 语言,把游戏发布到市场上,就需要准备好被破解的可能,所以在发布到市场之前要对自己的游戏包内的脚本文件和非脚本文件做加密操作。
通过这篇文章你能了解到
1. 了解lua的加载流程
2. 了解其他加载流程
3. 资源加密
4. 资源解密
5. 加密算法加强
6. 资源名称混淆
1. LUA脚本加载流程
AppDelegate::applicationDidFinishLaunching ->
LuaEngine::getInstance->init ->
LuaStack->create->init->addLuaLoader ->
cocos2dx_lua_loader ->
LuaStack->LuaLoadBuffer->lual_loadBuffer
2. 其他资源加载流程
Sprite:create-> initWithFile ->
Director->getTextureCache()->addImage
FileUtils::getInstance()->getDataFromFile->getContent
3. 资源加密
lua 和 图片的加密解密都是使用的是xxtea算法(继承quick,修改而来)
lua 在做解密算法前,lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密(可逆的安全性不高)
gamePackage 加密算法演示。
4. 资源解密
图片的解密:
FileUtils getContent
gameString_getSecretKey
5. 加密算法加强
不使用luac,对lua 源文件进行混序算法,提高可逆成本。