cocos2d-x lua 加密

  1. usage: cocos luacompile [-h] [-v] [-s SRC_DIR_ARR] [-d DST_DIR] [-e]
  2. [-k ENCRYPTKEY] [-b ENCRYPTSIGN] [--disable-compile]
  3. 对 lua 文件进行加密和编译为字节码的处理。
  4. optional arguments:
  5. -h, --help            show this help message and exit
  6. -v, --verbose         更多输出信息。
  7. -s SRC_DIR_ARR, --src SRC_DIR_ARR
  8. 指定需要编译的 lua
  9. 文件路径,支持指定多个路径。
  10. -d DST_DIR, --dst DST_DIR
  11. 指定输出文件的路径。
  12. -e, --encrypt         开启 XXTEA 加密功能。
  13. -k ENCRYPTKEY, --encryptkey ENCRYPTKEY
  14. 指定 XXTEA 加密功能的 key 字段。
  15. -b ENCRYPTSIGN, --encryptsign ENCRYPTSIGN
  16. 指定 XXTEA 加密功能的 sign 字段。
  17. --disable-compile     关闭编译为字节码的功能。

我们主要用到-s,-d,-e,-k,-b以及--disable-compile这几个参数:

-s就是你需要加密的lua脚本所在的目录。

-d就是逆需要将加密后的lua脚本放置的目录。

-e是开启XXTEA加密功能,如果不用这个参数,后面的也就不用了,这样子做是编译为字节码。

-k是在-e开启的情况下使用,XXTEA加密算法的key字段,这个自己定,不要太长,但越复杂越好。

-b是在-e开启的情况下使用,XXTEA加密算法的sign字段,这个自己定,不要太长,但越复杂越好。

--disable-compile是关闭字节码编译。为什么要加这个?因为现有的cocos引擎使用的是luajit来编译字节码,它仅支持32位,不支持64位的机子(截止至2017.01数据),而苹果官方要求上传的app必须兼容arm64的机子,因此只能选择XXTEA加密,这种加密方式也是很不错的,算法小巧,在没有key和sign的情况下不易被破解,兼容32和64位,是目前用cocos开发唯一可取的加密方式。

这个命令举个例子:

[plain] view plain copy

  1. cocos luacompile -s /Users/xxx/src -d /Users/xxx/src0 -e -k testtt -b signnn --disable-compile

这条demo就是对src的所有lua脚本做key=testtt,sign=signnn的XXTEA加密,并关闭字节码编译。请注意,如果项目中除了lua脚本外,还有其他一些文件,比如plist,json,xml这些,是不会被编译的,实际跑的时候记得拷贝过去,保持源文件和目标文件具有一致性,否则会有问题的。

mytest

Lua 脚本加密

1.cocos luacompile -s /Users/wangchengcheng/Documents/SelfZone/Cocos/MyGame/src -d /Users/wangchengcheng/Documents/SelfZone/Cocos/MyGame/gametools -e -k mygamekey -b mygamesign --disable-compile

2.项目中使用

bool AppDelegate::applicationDidFinishLaunching()
{
// set default FPS
Director::getInstance()->setAnimationInterval(1.0 / 60.0f);

// register lua module
auto engine = LuaEngine::getInstance();
if(!m_bInitLuaEngine){
ScriptEngineManager::getInstance()->setScriptEngine(engine);
lua_State* L = engine->getLuaStack()->getLuaState();
lua_module_register(L);
register_custom_function(L);
register_all_packages();
m_bInitLuaEngine = true;
}

setMySearchPath();

LuaStack* stack = engine->getLuaStack();
// default key "2dxLua"
// default sign "XXTEA"
string mygamekey = "2dxLua";
string mygamesign = "XXTEA";
bool useSelfEncrypt = true;
if(useSelfEncrypt){
mygamekey = "mygamekey";
mygamesign = "mygamesign";
}

stack->setXXTEAKeyAndSign(mygamekey.c_str(), strlen(mygamekey.c_str()), mygamesign.c_str(), strlen(mygamesign.c_str()));
if (engine->executeScriptFile("main.lua"))
{
return false;
}
return true;
}

时间: 2024-11-18 14:57:18

cocos2d-x lua 加密的相关文章

Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件<MAC平台开发试用--windows平台暂未研究>

    首先要说,最近真的是太忙了,好久没写博客了,今天正好有空,就写一下最近在写游戏中的一些发现: 话说,基于Cocos2dx 引擎 + 脚本写游戏,至今的感触就是可以进行增量更新和即时编译等,节省了很多时间:好了废话不多说了,进入正题: 这里我是以Cocos2d-x-2.2.2 为例<其实,写着文章时候Cocos2d-x-3.2 都封版了>: 今天我就说一下怎么用Cocos2d-x3.2中的cocos-console 去 批量 加密lua脚本-变成luac文件 ,js文件变成jsc加密文

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

cocos luacompile cocos luacompile Overview Usage Available Arguments Samples Overview Compile the .lua files to .luac. Usage cocos luacompile [arguments] Available Arguments arg available value sample description necessary -h, --help - - Show the hel

cocos2dx for lua 加密图片

图片加密的方法有很多种,在cocos2dx中,经常会使用TexturePacker来加密图片,方法如下: 打开TexturePacker,点击Add Sprite添加图片,在output栏下的Texture format选择pvr.gz格式, 点击Content protection加密按钮,创建加密密钥,点击create new key来创建一个新的密钥,clear/disable删除密钥,save as global key可以将当前密钥保存成全局密钥,以后可以使用,use global k

使用cocos2d脚本生成lua绑定

这几天要老大要求把DragonBones移到cocos2dx 3.0 里边,并且绑定lua使用接口.因为刚学lua,使用的引擎也刚从2.2改为3.0,各种不熟悉,折腾了好几天才弄完,有空了总结一下 这篇先说一下cocos2d生成lua绑定的修改,有空的话再写一篇lua中注册回调到c++中方法 我的目录结构 假设我的目录名称是DragonBones -Cocosdx目录 -DragonBones  -c代码 -c代码头 -tools  db_DragonBones.ini genbindings.

Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密

项目要求lua加密脚本,有关调查的相关信息 ,学习lua自己可以使用luac编译成字节码脚本(bytecode)启用加密,我试了一下.确实是可行. 以下是本机lua编译字节码解释器: 1.创建一个名为1.lua文件,只有一个字print("Hello Lua"),新建一个空的out.lua脚本文件 2.開始--执行--cmd 3.luac -o out.lua 1.lua 注: luac -o [编译后脚本名] [脚本名],必要时带上脚本路径,如: 回车之后,再打开out.lua就能够

游戏人生(一),我的lua之旅:那些坑爹的CCBReaderLoad

首先,我们说说这个CCBReaderLoad. 这个脚本是cocos2dx自带的一个lua+cocosbuilder 的工具,详细功能呐,往下看. 先来看下我遇到的一个问题: ----美工给了我一个.ccbi文件.让我放到游戏里去. 然后我们说说这个ccbi.ccbi是cocosbuilder绘制界面导出的文件,有兴趣的同学能够自行去百度. 我们来讨论下怎样用这个ccbi,以及ccbi中的坑. 先来看一段testlua的代码 TestMenusLayer = TestMenusLayer or

【转】cocos2d-x Lua

Call custom c++ from Lua cocos2d-x lua binds c++ class, class functions ,enum and some global functions to lua through auto-binding by bindings-generator(tools/bindings-generator) and some manual binding,so we can call custom c++ from lua convenientl

Cocos2d-x3.0下 Lua与C++相互调用

这里讲下Lua与C++之间如何实现相互调用 原文连接:http://blog.csdn.net/qqmcy/article/details/26052771 DJLCData.h 实现类 // // DJLCData.h // uitestLua // // Created by 杜甲 on 14-5-17. // // #ifndef __uitestLua__DJLCData__ #define __uitestLua__DJLCData__ #include "cocos2d.h"

cocos2dx 3.3 C++工程添加lua支持

准备工作: 1. 拷贝cocos2d-x-3.3rc0\external\lua整个文件夹到项目中(如myProject\cocos2d\external\lua) 2. 拷贝cocos2d-x-3.3rc0\cocos\scripting整个文件夹到项目中(如myProject\cocos2d\cocos\scripting) VS工程配置: 1. 解决方案中添加刚拷贝过来的libluacocos2d项目(添加现有项目: myProject\cocos2d\cocos\scripting\lu