目录
一、系统环境
OS: Windows_NT x64 10.0.19045
JADX:1.5.0
010Editor:12.0.1
IDA:7.7.220118
python:3.8.10
Node.js: 18.17.1
frida :14.2.14
objection:1.11.0
vscode: 1.87.2
device:nexus 5x-8.1.2
二、详细分析
前言:
解密 COCOS游戏 lua脚本实例共有3篇内容,分别对应不同的 lua 脚本加解密方式
1.lua脚本是什么?
百度百科:Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译、运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。
Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML、ini等文件格式,并且更容易理解和维护。 Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译、运行。 一个完整的Lua解释器不过200k,在所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。
2.为什么游戏开发要用lua脚本?
灵活性:Lua是一种轻量级的脚本语言,易于学习和使用,可以快速修改和调试游戏中的各种逻辑和功能,提高开发效率。
扩展性:Lua支持动态类型和动态数据结构,可以方便地扩展和修改游戏的功能,使游戏更加灵活和可定制。
效率:由于Lua是一种解释性语言,可以实时修改脚本代码并立即生效,避免了重新编译和打包的时间,节省了开发时间。
跨平台性:Lua是跨平台的脚本语言,在不同的游戏引擎和平台上都可以使用,提高了游戏的可移植性和适应性。
社区支持:Lua拥有庞大的社区支持和活跃的开发者社区,可以获取到大量的开源代码和教程,方便开发者学习和解决问题。
在我自己看来,游戏使用 lua 最重要的原因是效率和跨平台
效率:游戏的版本更新相对普通应用来说是非常频繁的,新功能上线、节日活动、BUG修复等等,特别是遇到紧急BUG的时候,如果按照 代码修复->测试验收->打包上传->平台审核->强制更新 这个流程来说,特别是IOS平台,等到平台审核通过后,估计黄花菜都凉了
这时可见 脚本热更新 功能是多么重要
跨平台:对多端平台(IOS,Android,Windows,MacOS,WEB,小游戏)特别重要,如果对每个平台的差异都要构建不同的代码的话成本是比较高的,当然现在主流的开发引擎(COCOS,Unity)都已经做了适配,不过游戏功能代码还是要自己写的,肯定不可能所有代码都用 C/C++或C#去写,LUA支持跨平台,基于上面【效率】提到的优点,部分代码用LUA写是更好得选择
所以核心功能用跨平台的 C/C++ 编写,提供接口给 LUA 调用,LUA即可以快速开发修改,又可以热更新,招写 LUA 的还比写 C/C++的便宜(doge),这么多好处游戏公司怎么会不愿意用呢!
正文:
现在的手游开发主要使用的是 COC