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*.luain directory./projects/MyLuaGame/srcto*.luac. Then encrypt the luac files with key isMyLuaKeyand 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加密。这样小游戏全然够用了。
查阅效果图:



项目測试:
/// 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)的更多相关文章
- cocos lua 加密方案
cocos2d使用的是luajit,lua原生编译出来的bytecode和luajit是不兼容的,所以直接用luac法编译出来的bytecode脚本无法在cocos2d中使用. 目前所指的解决方案有2 ...
- base64随机字符混淆加密、解密-美拍视频地址解密,反推加密算法
用火车头测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码.如下图 于是好奇之下研究了下解密算法.具体过程省略800字.发现美拍的视频解密是通过js完成,于是找到了具体 ...
- php+js的 authcode 混淆加密和解密,php和js可以通用加密和解密
<script> //md5.js var hexcase = 0; function hex_md5(a) { return rstr2hex(rstr_md5(str2rstr_utf ...
- RSA加密、解密、签名、验签的原理及方法
一.RSA加密简介 RSA加密是一种非对称加密.可以在不直接传递密钥的情况下,完成解密.这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险.是由一对密钥来进行加解密的过程,分别称为公钥和私 ...
- 常见的加密和解密算法—DES
一.DES加密概述 DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并 ...
- Spring对外部属性文件指定的某个属性进行加密、解密
[From] http://blog.csdn.net/ethanq/article/details/7333897 在我们开发当中,经常会用到spring框架来读取属性文件的属性值,然后使用占位符引 ...
- ASP.NET数据库连接字符串的加密与解密
ASP.NET web.config中,数据库连接字符串的加密与解密. 虽然不怎么新鲜,但相信还是有许多人不知道,好,不说废话,直接给方法:开始--->运行,输入cmd,接着输入以下内容 加密: ...
- Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件<MAC平台开发试用--windows平台暂未研究>
首先要说.近期真的是太忙了.好久没写博客了,今天正好有空,就写一下近期在写游戏中的一些发现: 话说,基于Cocos2dx 引擎 + 脚本写游戏,至今的感触就是能够进行增量更新和即时编译 ...
- .net中加密与解密
.Net中的加密解密 引言 在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全.本文将简单地介绍了加密解密的一些概念,以及相关的数字签名.证书,最后介绍了如何在.NET中对数据进行对称 ...
随机推荐
- hihocoder #1301 : 筑地市场 二分+数位dp
#1301 : 筑地市场 题目连接: http://hihocoder.com/problemset/problem/1301 Description 筑地市场是位于日本东京都中央区筑地的公营批发市场 ...
- TensorFlow安装和HelloWorld
TensorFlow安装 TensorFlow可以在各种操作系统上面安装.安装的时候要注意TensorFlow的类型,一种是普通的版本,仅支持CPU,安装简单.另外一种类型带GPU的,可以利用GPU来 ...
- 网络服务器搭建的那些事(PV QPS Throughput) 转载
一.前言: 从事后台sever开发的同学,代码开发完成之后,上线之前,总会进行各种黑盒白盒测试,压测.正确性测试... 而测试同学,会给开发同学一份测试报告,需要开发同学进行确认...问题来了,里面好 ...
- DOM-XML(解析与创建)
/** * 读取(解析)xml文件 * @author Administrator * */ public class DOMRead { public static void main(String ...
- HTML中显示的文字自动换行
在html中控制自动换行 http://www.cnblogs.com/zjxbetter/articles/1323449.html eg: <table> <tr> < ...
- KJBitmap与KJHttp的深度用法
摘要 本文原创,转载请注明地址:http://kymjs.com/code/2015/09/24/01这篇文章是对KJFrameForAndroid使用的一个深入学习 之前写过一些有关KJFrame的 ...
- Linux 操作当前时间
一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" ...
- 【liunx】使用xshell连接虚拟机上的CentOS 7,使用xhell连接本地虚拟机上的Ubuntu, 获取本地虚拟机中CentOS 7的IP地址,获取本地虚拟机中Ubuntu 的IP地址,Ubuntu开启22端口
注意,如果想用xshell去连接本地虚拟机中的linux系统,需要本地虚拟机中的系统是启动的才能连接!!!!! ============================================ ...
- 算法:非平衡二叉搜索树(UnBalanced Binary Search Tree)
背景 很多场景下都需要将元素存储到已排序的集合中.用数组来存储,搜索效率非常高: O(log n),但是插入效率比较低:O(n).用链表来存储,插入效率和搜索效率都比较低:O(n).如何能提供插入和搜 ...
- 算法:快速排序(Quick Sort)
算法定义 目前学习是五种排序(冒泡.插入.选择.合并.快速)中,快速排序是最让我喜欢的算法(因为我想不到),其定义如下: 随机的从数组中选择一个元素,如:item. 对数组进行分区,将小于等于 ite ...