项目要求对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原生的解释器能够直接解析luac编译出来的bytecode脚本。非常方便!

重点:

做完了以上的一系列之后,我照着这种方法编译项目中的脚本。然后在cocos2dx环境下使用,发现不行!

于是又查了一下资料,发现2dx使用的是luajit,lua原生编译出来的bytecode和luajit是不兼容的,所以照着上面方法编译出来的bytecode脚本无法在2dx中使用。

解决问题事实上非常easy,就是用2dx自带的luajit编译lua脚本,以下附上luajit编译bytecode的方法:

1、在cocos2d-x-2.2.3\scripting\lua\luajit\LuaJIT-2.0.1\src文件夹下有个msvcbuild.bat批处理文件,须要先把luajit.exe这个东西给编译出来。

2、打开visual studio的命令行工具。这个仅仅要装了vs都会有,在安装文件夹里面能够找到。

3、用vs的命令行工具cd到luajit的src文件夹

4、运行msvcbuild.bat批处理文件。编译出luajit.exe

编译完毕之后。会在src文件夹下生成一系列文件,当中有一个luajit.exe

跳到文件夹:lib\cocos2d-x\scripting\lua\luajit\LuaJIT-2.0.2\src

运行命令:luajit.exe -b test.lua test.lua

接下来就能够使用luajit.exe编译lua脚本的bytecode了:luajit
-b [脚本名] [编译后的脚本名]。运行完后会在src文件夹下生成一个已经编译成bytecode的jit.lua文件

以下把编译之后的jit.lua放在2dx中试一下,以HelloLuaproject为基础,把jit.lua放到\samples\Lua\HelloLua\Resources下,改动AppDelegate.cpp中的lua调用为std::string
path = CCFileUtils::sharedFileUtils()->fullPathForFilename("jit.lua");

执行结果为:



至此。luajit编译bytecode加密已完毕!

严重注意:样例中,我把编译前后的脚本名字取的不一样,是为了让大家看出差异化来,实际在项目中使用的时候。脚本的名字编译前后最好都一致,不然在脚本中相互require的时候可能会出现故障!

bytecode文件的格式是lua

Cocos2d-x使用Luajit将Lua脚本编译为bytecode,实现加密 更新的更多相关文章

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

    http://www.cocoachina.com/bbs/read.php?tid=205802 lua脚本进行加密,查了一下相关的资料 ,得知lua本身能够使用luac将脚本编译为字节码(byte ...

  2. Cocos2d-x使用Luajit将Lua脚本编译为bytecode,从而实现加密

    转自:http://www.58player.com/blog-2537-87218.html 项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(b ...

  3. 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)

    一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp) 程序员的生活要一切自动化,更要幸福^_^. 转载请注明出处http: ...

  4. 运维实践-最新Nginx二进制构建编译lua-nginx-module动态链接Lua脚本访问Redis数据库读取静态资源隐式展现

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x0n 前言 ...

  5. Learning Lua Programming (3) iMac下搭建Lua脚本最好的编码环境(代码补全,编译运行)

    这篇文章参考自http://blog.sina.com.cn/s/blog_991afe570101rdgf.html,十分感谢原作者的伟大创造,本人亲测可行. 这篇文章记录一下如何在MAC系统环境下 ...

  6. Java调用Lua脚本(LuaJava使用、安装及Linux安装编译)

    依赖包(附件有下载): 包名 类型 操作系统 luajava-1.1.jar jar ALL libluajava-1.1.so .so linux luajava-1.1.dll .dll wind ...

  7. 通过luac编译lua脚本

    在lua官网下载一个lua的release包,里面有已经编译好的lua启动文件(包括lua.exe),其中还有luac.exe, 这个程序是用来将lua文件编译成二进制码, 使用方法很简单,在控制台调 ...

  8. mac下Nginx+lua模块编译安装

    Nginx的nb之处就不说了,lua也是一个小巧的脚本语言,由标准C编写而成,几乎可以运行在所有的平台上,也非常强大,其他特性请自行度娘.nginx_lua_module是由淘宝的工程师清无(王晓哲) ...

  9. 使用compile_scripts.php脚本,生成lua打包的zip,解决加密问题

    @echo off set DIR=%~dp0 set TEMPLATE_ROOT=%DIR%.. echo %TEMPLATE_ROOT%\quick\bin\win32\php.exe echo ...

随机推荐

  1. Android获取图片实际大小兼容平板电脑

    项目中有个图片在平板电脑中显示特别小的原因.一直苦于没找到原因,也没有平板电脑測试,今天找了个改动分辨率的,编写相关方法最终处理了,记录下比較: 好让以后不造轮子. 主要是获取文章相关图片显示问题.直 ...

  2. OpenFace Docker 使用简介

    在Docker中使用openface最大的问题是数据与主机的交互,下面我介绍几种方法来实现主机与Docker容器的数据交互. 1.第一种也是最方便的一种方法是在进入容器时使用-v参数将主机的目录挂载到 ...

  3. CentOS 6 安装最新的 Redis 2.8 ,安装 TCMalloc

    1,遇到的问题就是 redis 2.8 版本号依赖 Google 的 TCMalloc TCMalloc(Thread-Caching Malloc)是google开发的开源工具──"goo ...

  4. BZOJ1492:[NOI2007]货币兑换 (CDQ分治+斜率优化DP | splay动态维护凸包)

    BZOJ1492:[NOI2007]货币兑换 题目传送门 [问题描述] 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和B纪念券(以下简称B券).每个持有金券的 ...

  5. 英语发音规则---Q字母

    英语发音规则---Q字母 一.总结 一句话总结: 1.Q/que发[k]音? Iraq [ɪ'rɑ:k] n. 伊拉克 cheque [tʃek] n. 支票 2.Qu-发[kw]? quality ...

  6. 1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD

    排版也是醉了见原文:http://www.cnblogs.com/maybe2030/p/5089753.html 在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度 ...

  7. poj--1985--Cow Marathon(树的直径)

    Cow Marathon Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 4424   Accepted: 2214 Case ...

  8. 转:utf8汉字编码16进制对照

    http://blog.chinaunix.net/uid-25544300-id-3281847.html GB    Unicode  UTF-8     Chinese Character Co ...

  9. 杂项-报表:Formula One(Active电子表格控件)

    ylbtech-杂项-报表:Formula One(Active电子表格控件) Formula One是一款应用软件,是由Visual Components公司开发的基于Windows平台的.类似于E ...

  10. 关于udebug的使用

    关于udebug的使用 特别强调: 转载于此 当你做国外OJ的题目时,总是不知道有什么问题,用题解打对拍都发现不出来,看到某道可恶美好的英文题目WA掉时,又不能下载样例时,会觉得很无奈吧.我们可以使用 ...