[Cocos2dx]cocos luacompile命令加密lua文件

用法介绍

命令cocos luacompile --h查看用法

usage: cocos luacompile [-h] [-v] [-s SRC_DIR_ARR] [-d DST_DIR] [-e]
                        [-k ENCRYPTKEY] [-b ENCRYPTSIGN] [--disable-compile]

对 lua 文件进行加密和编译为字节码的处理。

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         更多输出信息。
  -s SRC_DIR_ARR, --src SRC_DIR_ARR
                        指定需要编译的 lua
                        文件路径,支持指定多个路径。
  -d DST_DIR, --dst DST_DIR
                        指定输出文件的路径。
  -e, --encrypt         开启 XXTEA 加密功能。
  -k ENCRYPTKEY, --encryptkey ENCRYPTKEY
                        指定 XXTEA 加密功能的 key 字段。
  -b ENCRYPTSIGN, --encryptsign ENCRYPTSIGN
                        指定 XXTEA 加密功能的 sign 字段。
  --disable-compile     关闭编译为字节码的功能。

用法

luacompile.sh加密脚本文件

luacompile.sh加密脚本文件

PWD=`pwd`
COCOS='/Applications/Cocos2d-x/cocos2d-x-3.10/tools/cocos2d-console/bin/cocos'
rm  -rf  src_et
${COCOS} luacompile -s src -d src_et -e -k kBJMRK -b sTAMX --disable-compile

执行脚本命令输出:

通过 luacompile 命令对 lua 文件进行 XXTEA 加密以及编译为字节码的处理。
编译为字节码的功能基于 LuaJIT v2.0.3,所以目前编译成字节码的文件不适用于 iOS 64位设备。
正在处理 lua 文件。
编译完成。

把src文件夹下的.lua文件加密到src_et文件夹下的.luac文件

代码解密

bool AppDelegate::applicationDidFinishLaunching()
{
...
    // set default FPS
    Director::getInstance()->setAnimationInterval(1.0 / 60.0f);

    // register lua module
    auto engine = LuaEngine::getInstance();
    ScriptEngineManager::getInstance()->setScriptEngine(engine);
    LuaStack* stack = engine->getLuaStack();
    stack->setXXTEAKeyAndSign("kBJMRK", strlen("kBJMRK"), "sTAMX", strlen("sTAMX"));

...

    #if COCOS2D_DEBUG
        if (engine->executeString("require('src/main')"))
    #else
        if (engine->executeString("require('src_et/main')"))
    #endif
        {
            return false;
        }
#endif

  return true;
}

 

 

 

你可能感兴趣的:(Cocos2dx)