cocos lua 加密与解密 混淆 (版本号cocos3.4)
2023-09-11 14:15:01 时间
cocos luacompile
Overview
Compile the .lua
files to .luac
.
Usage
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 1408611270727806.png](http://cn.cocos2d-x.org/uploads/20140821/1408611270727806.png)
![1408611358113894.png 1408611358113894.png](http://cn.cocos2d-x.org/uploads/20140821/1408611358113894.png)
![1408611473430844.png 1408611473430844.png](http://cn.cocos2d-x.org/uploads/20140821/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("\n result: %s \n len; %ld",result,len);
读取正常;
相关文章
- 10.PHP加密相关
- [转] js在浏览器端对二进制流进行AES加密和解密
- C# 2进制、8进制、10进制、16进制...各种进制间的转换(三) 数值运算和位运算 C# 2进制、8进制、10进制、16进制...各种进制间的转换(二)搜集的各种转换及方法 C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法 C#.NET 中的定时器及使用方法 依赖注入 加密 解密
- Javascript中双等号(==)隐性转换机制 JS里charCodeAt()和fromCharCode()方法拓展应用:加密与解密
- Word控件Spire.Doc 【加密解密】教程(一):在 C#、VB.NET 中使用自定义密码加密、解密、保护 Word
- SpringBoot AES加密 PKCS7Padding 模式
- iOS AES的加密解密
- Linux Command gpg 加密
- C#,河豚算法(Blowfish Algorithm)的加密、解密源代码
- php DES加密或者解密
- 【Harmony OS】【ARK UI】ets使用第三方类库crypto实现加密解密
- 力扣解法汇总535-TinyURL 的加密与解密
- php rsa加密解密实例
- Java_DES 加密和解密源码
- 图解密码学对称加密
- 首个开放型量子加密通信系统发布
- Synaptics研发端到端加密的指纹传感器
- MD5加密工具
- 登录密码加密vue版(转载)
- php与java通用AES加密解密算法
- 出现身份验证错误,要求的函数不受支持(可能是由于CredSSP加密数据库修正)
- Java RSA加密解密