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

关于lua脚本加密的几点看法:

  1. luac 和 luajit 都不是加密,而是二进制预编译。luac 编译出来二进制是不可以迁移的 non-portable, luajit 编译出来的二进制是可迁移的 portable,所有 cocos 选择 luajit 内置。
  2. luajit 自带的VM的二进制执行效率高于 lua vm,所以用 luajit 预编译能够获得一定的运行时性能提升
  3. luac 和 luajit 都是预编译,所以没有起到任何加密作用。 luac 编译出的 bytecode 可以使用 http://luadec.luaforge.net/ 反向成明码的lua 文件。luajit 编译出的bytecode 我还没有找到反向工具,但是 bytecode 的格式是开放的,所有心做一下反向的话,并不是多难的事。用文本编辑器打开着两个程序编译出的二进制代码都可以看到,变量名和常量的明码。
  4. 所以,在 luac 和 luajit 的基础上,要实现一定的加密,有两个思路可以走。 1. 在 c 的 dofile 层面做加密,2. 在 lua 明文代码中做混淆。
  5. 关于 lua 明文代码的混淆,网上有一些现成的工具。用了一遍发现 http://luasrcdiet.luaforge.net/ 相对靠谱一些。 不过作用有限,能够起到的一个很好的效果,是把本地变量给minified 掉。
  6. 为了自动化起见,我把上面说的这些用脚本给工具化了,项目开源在:https://www.npmjs.org/package/lua-distiller

呵呵, quick-cocos2d-x 直接就提供以上工具了.

开发快捷又方便.

不错,留名备用。

感觉不错哦,哈哈

自从苹果要求支持64位,luajit如果再不更新版本,那就没什么用了。

请问下,如何修改批处理脚本,保证原来的lua脚本目录结构不变

讲的很详尽啊,谢谢LZ

现在不都工具集成好了吗

是好东西就要顶!

这个必须赞

mark一下~~~~~~

现在可以直接用cocos luacompile了

怎么解密?

楼主有没有试过 在IOS上面能不能行