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


    cocos luacompile

    Overview

    Compile the .lua files 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, --encrypt is 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--encrypt is 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 *.lua in directory ./projects/MyLuaGame/src to*.luac. Then encrypt the luac files with key isMyLuaKey and sign isMyLuaSign.


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

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

    以下给出全过程与測试project


    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加密。这样小游戏全然够用了。



    查阅效果图:
    1408611270727806.png


    1408611358113894.png


    1408611473430844.png


    项目測试:
     
        /// 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(" result: %s len; %ld",result,len);
    读取正常;




  • 相关阅读:
    数据库建表的时候报 “1215 Cannot add foreign key constraint”
    Maven项目中提示:Eclipse “cannot be resolved to a type” error
    数据表设计的几个简单原则
    使用brew安装软件
    linux如何设置用户权限
    前端页面——Cookie与Session有什么区别
    Git Push 避免用户名和密码方法
    $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
    PHP获取POST的原始数据的方法
    PHP底层的运行机制与原理
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6730401.html
Copyright © 2020-2023  润新知