cocos lua 加密与解密 混淆 (版本cocos3.4)

前端之家收集整理的这篇文章主要介绍了cocos lua 加密与解密 混淆 (版本cocos3.4)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

cocos luacompile

  • cocos luacompile
    • Overview
    • Usage
    • Available Arguments
    • Samples
    • @H_301_13@ @H_301_13@

      Overview

      Compile the.luafiles to.luac.

      Usage

      cocos luacompile [arguments]

      Available Arguments

      arg available value sample description necessary
      -h,--help - - Show the help message and exit no
      -s,--src source directory ./projects/MyLuaGame/src Specify source directory of lua files needed to be compiled. yes
      -d,--dst destination directory ./projects/MyLuaGame/src Specify destination directory bytecode files to be stored. yes
      -e,--encrypt - - Enable the encrypting of lua files. no
      -k,--encryptkey any string MyLuaKey Specify the encrypt key for the encrypting of lua scripts. It's only take effect when-e,--encryptis enabled. Default value is2dxLua. no
      -b,--encryptsign any string MyLuaSign Specify the encrypt sign for the encrypting of lua scripts. It's only take effect when--encryptis enabled. Default value isXXTEA. no

      Samples

      • cocos luacompile -h. Show the help message.
      • cocos luacompile -s ./projects/MyLuaGame/src -d ./projects/MyLuaGame/src -e -k MyLuaKey -b MyLuaSign
        Compile the*.luain directory./projects/MyLuaGame/srcto*.luac. Then encrypt the luac files with key isMyLuaKeyand sign isMyLuaSign.
      • @H_301_13@


        我们在实验的过程中出现了一些问题,支持64位的解决方案:

        cocos luacompile -s src/ -d out/ -e -k testKey123456 -b testSign123456 --disable-compile

        下面给出全过程与测试工程


        1.0 cocos luacompile 用法

        我用的普通的cocos2d lua,没用quick,quick好像可以对整个资源包括图像和音频都加密,打包成zip。但我没用quick.看了下luacompile 的 help,比较简单啊。

        先在项目根目录下建立了一个out的文件夹,然后就用这个命令试了下:

        cocos luacompile -s src/  -d out/

        比预想的顺利,在out目录下看到了很多luac文件。正如命令里说的,支持子目录。网上说luac还是会被反编译。就加上了key。

        cocos luacompile -s src/ -d out/ -e -k testKey123456 -b testSign123456

        他用的是XXTEA加密算法,可以看这篇文章《XXTEA 可逆加密解密算法 C++ C#兼容版本》

        还需要在AppDelegate.cpp文件的applicationDidFinishLaunching方法中加入setXXTEAKeyAndSign。这点它那个luacompile 的help就没提了,这是第一个坑。

        LuaStack* stack = engine->getLuaStack();
            stack->setXXTEAKeyAndSign("testKey123456",strlen("testKey123456"),"testSign123456",strlen("testSign123456"));
        
            if (engine->executeScriptFile("src/main.lua")) {
                return false;

        2.不支持64bit

        第二个坑马上来了:刚开始在IPhone4S模拟器运行好好的,IPhone5s就漆黑一片了。原来这样把lua编译后,虽然速度变快了,但还未支持64位系统,据说cocos2d 年底会给出luajit 64位解决方案,因为苹果要求的啊。

        然后因为这个问题我卡了一会儿。网上搜了了也没什么结果,都推荐使用Quick。游戏都写完了,转Quick有点麻烦。

        突然注意到luacompile help中最后一个选项:–disable-compile ,然后把命令改成下面这种:

        cocos luacompile -s src/ -d out/ -e -k testKey123456 -b testSign123456 --disable-compile


        也是出来luac文件,但只是简单用XXTEA加密。这样小游戏完全够用了。



        项目测试:

        /// decode:
        const char * key = "testKey123456";
        int keylen = (int)strlen(key);
        const char * sign = "testSign123456";
        int signlen = (int)strlen(sign);
        Data srcInfo = FileUtils::getInstance()->getDataFromFile("BugAnt.luac");
        //decode:
        xxtea_long len = 0;
        unsigned char * result = xxtea_decrypt(srcInfo.getBytes() + signlen,
        (xxtea_long)srcInfo.getSize() - signlen,
        (unsigned char* )key,
        (xxtea_long)keylen,
        &len);
        printf("\n result: %s \n len; %ld",result,len);
        读取正常;

        原文链接:https://www.f2er.com/cocos2dx/338783.html

猜你在找的Cocos2d-x相关文章