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

编程入门 行业动态 更新时间:2024-10-28 08:22:42

cocos luacompile

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

Overview

Compile the .lua files to .luac.

Usage

cocos luacompile [arguments]

Available Arguments

argavailable valuesampledescriptionnecessary
-h, --help--Show the help message and exitno
-s, --srcsource directory./projects/MyLuaGame/srcSpecify source directory of lua files needed to be compiled.yes
-d, --dstdestination directory./projects/MyLuaGame/srcSpecify destination directory bytecode files to be stored.yes
-e, --encrypt--Enable the encrypting of lua files.no
-k, --encryptkeyany stringMyLuaKeySpecify the encrypt key for the encrypting of lua scripts. It's only take effect when-e, --encrypt is enabled. Default value is2dxLua.no
-b, --encryptsignany stringMyLuaSignSpecify 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

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


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);
读取正常;




更多推荐

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

本文发布于:2023-06-13 07:52:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1360126.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:版本   cocos   lua

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!