http://www.cocoachina.com/bbs/read.php?tid=205802

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






接下来就能够使用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时间可能出现故障!

Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密的更多相关文章

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

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

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

    项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身能够使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行. 以下是使用原生的lua解释器编译字节码: 1 ...

  3. SystemTap----将SystemTap脚本编译成内核模块

      当运行SystemTap脚本时,会根据脚本生成一个内核模块,然后插入到系统中执行后退出.这个过程总共分为5个阶段:parse, elaborate, translate, compile, run ...

  4. 把perl脚本编译成exe

    来源:http://www.veryhuo.com/a/view/38338.html 今天想把 perl 脚本编译成 exe 以便脱离 perl 解释器独立运行.都可以生成PERL的PE文件,在PE ...

  5. python 脚本编译成可执行二进制(exe)

    本文python3,pyinstaller也支持py2 cmd下载模块pyinstaller 首先: pip install pyinstaller 其次: cmd下进入需要编译的xxx.py文件目录 ...

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

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

  7. 通过luac编译lua脚本

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

  8. Windows下为Lua脚本进行加密处理

    缘由 想对Lua脚本进行安全性处理,可惜一直没有想到很好的解决方案,考虑过用原生Lua将脚本编译成二进制代码,也考虑过用zlib将文件进行加密压缩处理,但是感觉都不是最佳方案,今天忽然想到有个东西叫L ...

  9. Lua脚本在Redis事务中的应用实践

    使用过Redis事务的应该清楚,Redis事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断.事务中的命令要么全部 ...

随机推荐

  1. 黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block 到目前为止,我们使用的模块都是在同一个配置 ...

  2. 使用JustDecompile修改程序集

    原文:使用JustDecompile修改程序集        JustDecompile是Telerik公司推出一个免费的.net反编译工具,支持插件,与Visual Studio 2010,2012 ...

  3. oracle 修改dbid和dbname

    一般这玩意没人修改,除非特殊情况,比如克隆数据库等等 步骤: 1.备份数据库 2.启动数据到mount状态 3.nid命令修改 (如果只是修改dbid,那么不需要dbname参数,需要更改dbname ...

  4. java基础---->Zip压缩的使用(转)

    java中提供了对压缩格式的数据流的读写.它们封装到现成的IO 类中,以提供压缩功能.下面我们开始java中压缩文件的使用. 目录导航: 关于压缩的简要说明 GZIP压缩文件的使用 ZIP压缩文件的使 ...

  5. log4j 实例 , 浅析

    一.新建log4j.propperties,放在工程的src目录下. #fileAppender log4j.rootCategory = DEBUG,file,consoleAppender log ...

  6. C++写一个简单的解析器(分析C语言)

    该方案实现了一个分析C语言的词法分析+解析. 注意: 1.简单语法,部分秕.它可以在本文法的基础上进行扩展,此过程使用自上而下LL(1)语法. 2.自己主动能达到求First 集和 Follow 集. ...

  7. 设计模式——工厂模式(Factory)

    要想正确理解设计模式,首先必须明白它是为了解决什么问题而提出来的. 设计模式学习笔记 --Shulin 转载请注明出处:http://blog.csdn.net/zhshulin 1.概念 工厂模式定 ...

  8. Sql Server远程查询db 表中的数据,以本地

    step 1: sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'Ad Hoc Distributed Queri ...

  9. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context}

    警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to'org.eclipse ...

  10. Lua相关的知识

    http://stackoverflow.com/questions/5438751/how-to-debug-lua-remotely http://cn.bing.com/search?q=org ...