精选文章 cocos2d 之lua加密

cocos2d 之lua加密

作者:_Bruce 时间: 2020-08-05 08:34:06
_Bruce 2020-08-05 08:34:06

加密方式

lua 代码加密方式很很多种,这里只讲最简单的一种,就是把代码编译成二进制字节码。lua 是一门脚本语言,不需要经过编译就可以使用 lua 解释器来执行;但我们也可以把 lua 代码事先编译成二进制文件,这样就达到了加密的方式。

使用 lua 编译器

最简单也最直接的方式就是使用 lua 编译器来编译 lua 代码,编译的方式很简单,打开命令行,输入下面的命令

lucac -o out.lua source.lua

test.lua 文件内容如下:

print("test lua")

然后终端输入

luac -o out.lua test.lua

这样我们就能将test中内容转换成二进制输出到out.lua中了

然后通过终端打开lua解析器,require("test")这时候我们看见终端输出了test lua。

其实lua解析器无论是lua源码还是加密后的字节码都能执行。

但是通过此方式加密后,cocos2d是不能运行的,因为引擎使用的是luajit加密的,虽然都是二进制,但是机密格式不一样,所以我们要通过luajit将lua文件加密以来供给cocos2d使用。

使用 luajit

使用 lua 编译器来编译 lua 代码虽然简单方便,但编译后的字节码却不能在 cocos2d-x 中使用,原因是 cocos2d-x 使用的是 luajit。luajit 是一套合适 c 语言写的 lua 解释器代码,是一种即时编译器(JIT),与原生的 lua 编译器有所区别。也就量说同一个文件使用 luajit.exe 编译后的字节码和使用 luac.exe 编译后字节码是不一样,因此使用 luac.exe 编译后的字节码不能在 cocos2d-x 中正确加载,正确的方式是使用 luajit 来编译 lua 源代码。

获取 luajit

看了网上的教程,都是说在 %COCOS_ROOT%\scripting\lua\luajit\LuaJIT-2.0.1\src 目录下有个 msvcbuild.bat 批处理文件,然后执行这个脚本就可以生成一个 luajit.exe 文件。但这是 cocos2d 2.x 的做法,在 3.x 中并没有找到这个脚本文件。网上的教程抄袭成风,找了好几篇博客,内容全是一模一样的,都是讲 2.x 的做法。最后自己使用 everything 工具搜索资源管理器,发现在 %COCOS_ROOT%\tools\cocos2d-console\plugins\plugin_luacompile\bin 下面就有一个现在的 luajit.exe;从 2.x 到 3.x 总要有些进步的,现在已经不用自己去生成 luajit 了,引擎已经帮我们集成好了。

使用 luajit 来编译源代码

使用 luajit 编译 lua 源代码和使用原生的 lua 编译器差不多,在 luajit 所在目录打开命令行,输入

luajit.exe -b source.lua target.lua

这样我们就生成了,通过luajit加密后的lua文件,将此文件放入cocos2d工程中就能够使用了。

批量加密转换lua文件脚本:https://download.csdn.net/download/qq_22990635/12690642

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:HTML5和WAP的联系与区别!

下一篇:2020B证(安全员)考试及B证(安全员)模拟考试题库

您可能感兴趣

  • Redis配置文件参数中文详解

    Redis是一个高性能的key-value数据库。 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。  为了更好的使用redis,我们需要详细的了解redis...

  • 面试刷题11-12

    背景 在老东家五年了,总共工作整七年,经历两家公司。2019-10-31日离职。公司规模较小,项目压力不大,非985/211毕业,统招本科,计算机专业。目标:中大型公司,最好是大厂,嘿嘿,不过不抱希望,毕竟背景不太好。 准备 撰写简历,每天下班回家 7-12点看视频,刷博客,看面试题。 学习内容:JavaGuide,《某某时间》系列专题,《某某课堂》学习视频。 准备内容:Java 基础,集合...

  • Ignite简介以及和Coherence、Gemfire、Redis等的比较

    1.Ignite简介 Apache Ignite 内存数据组织框架是一个高性能、集成化和分布式的内存计算和事务平台,用于大规模的数据集处理,比传统的基于磁盘或闪存的技术具有更高的性能,同时他还为应用和不同的数据源之间提供高性能、分布式内存中数据组织管理的功能。 2.Ignite历史 Ignite来源于尼基塔·伊万诺夫于2007年创建的GridGain系统公司开发的GridGain软件,尼基塔...

  • 值得推荐的C/C++框架和库 (真的很强大)

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。 下载链接:http://home.tiscali.cz/~cz2...

  • redis 未授权访问详解

    一. 应用介绍   Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、 Key-Value数据库。和Memcached类似,它支持存储的value 类型相对更多,包括 string(字符串)、list ( 链表)、 set(集合)、zset(sorted set – 有序集合)和 hash(哈希类型)。这些数据类型都支持push/pop 、 add/re...

  • 花了三个月终于把所有的Python库全部整理了!祝你早日拿到高薪!

    链接:https://www.jianshu.com/p/2642f9d28f34 库名称简介 Chardet字符编码探测器,可以自动检测文本、网页、xml的编码。 colorama主要用来给文本添加各种颜色,并且非常简单易用。 Prettytable主要用于在终端或浏览器端构建格式化的输出。 difflib,[Python]标准库,计算文本差异 Levenshtein,快速计算字符串相似度...

  • skynet源码赏析

    写在最前面 skynet是目前使用比较广泛的服务端框架,虽然目前网上资料众多,但是从自己的学习和使用经历来看,缺乏能够让自己系统了解该框架底层机制的资料,这段时间,趁着自己有时间,阅读了skynet底层的一些代码,现在将自己理解的部分总结并记录下来,以备日后使用。本文旨在捋清skynet框架的结构和主要流程,并不会涉及skynet的方方面面,一些论述,我贴上了一些源码加以论证,并在引用的源码...

  • 2019必学的10大顶级Python库

    https://mp.weixin.qq.com/s/2vwkHB3-F9m6AhHMGvusJQ 作为数据科学和机器学习相关的研究和开发人员,大家每天都要用到 python。在本文中,我们将讨论一些 python 中的顶级库,开发人员可以使用这些库在现有的应用程序中应用、清洗和表示数据,并进行机器学习研究。 我们将讨论以下 10 个库: TensorFlow Scikit-Learn Nu...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。