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


    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.3scriptinglualuajitLuaJIT-2.0.1src文件夹下有个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放到samplesLuaHelloLuaResources下,改动AppDelegate.cpp中的lua调用为std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("jit.lua");
    执行结果为:


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



    严重关注:斯沃琪,我编译脚本名称是不一样的前后服用后。为了让大家看到了差距,当在项目中的实际使用,脚本编写的最佳一致之前的名称。否则,彼此脚本require时间可能出现故障!


  • 相关阅读:
    练习题
    练习题
    作业 —— day77
    解决:Django项目no such table django_session
    解决:A server error occurred. Please contact the administrator
    作业24
    元类
    类的内置方法
    反射
    考试错题
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4725670.html
Copyright © 2020-2023  润新知