代碼加密的重要性就不用多講了。網上講代碼加密的一大堆,但是很多都隻是講講原理,還有好多轉載的,而本博注重的是步驟詳細,讓新手一步步完成代碼加密。
一、下載下傳quick-cocos2d-x
quick-cocos2d-x封裝了一套加密的工具,先下載下傳quick-cocos2d-x,git位址https://github.com/dualface/v3quick。
解壓之後把bin目錄拷貝到我們的cocos2d-x工程根目錄。
二、加密代碼
cocos提供了luacompile指令,講lua檔案編譯成luac位元組碼,但是luac可以被反編譯。
quick-cocos2d-x提供了pack_files指令,可以将檔案加密後打包成壓縮包。
到bin目錄打開指令行視窗,執行pack_files.bat -h 可以檢視pack_files的使用方法。
1、編譯luac位元組碼
::script_compile.bat
set SRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\src
set DSRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\dsrc
cocos luacompile -s %SRC% -d %DSRC%
2、對luac位元組碼檔案進行加密後打包
::script_pack.bat
set DSRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\dsrc
set ESRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\esrc
cd bin
pack_files.bat -i %DSRC% -o %ESRC% -m zip -ek 123456 -es test
這時候會生成esrc壓縮檔案。
三、修改AppDelegate檔案
bool AppDelegate::applicationDidFinishLaunching()
{
auto engine = LuaEngine::getInstance();
ScriptEngineManager::getInstance()->setScriptEngine(engine);
lua_State* L = engine->getLuaStack()->getLuaState();
lua_module_register(L);
// If you want to use Quick-Cocos2d-X, please uncomment below code
// register_all_quick_manual(L);
if (USE_XXTEA_ENCRYPT == 1)
{
auto stack = engine->getLuaStack();
stack->setXXTEAKeyAndSign("123456", strlen("123456"), "test", strlen("test"));
stack->loadChunksFromZIP("esrc");
stack->executeString("require 'main.luac'");
}
else
{
if (engine->executeScriptFile("src/main.lua")) {
return false;
}
}
return true;
}
注意:這裡用的是require "main.luac"。
删除原來的代碼源檔案,運作也成功運作。