弱鸡娱乐网 · 免费提供绿色软件、活动线报以及其他网络资源,好货不私藏!

【游戏破解】【技术教程】一次关于unity–lua逆向的分析文章

zhangzhyu 安卓软件

导语:样本xlua,简单涉及到解密、hook等部分基础逆向。补足个人学习路上该路线的教程贴

本次样本算是一个比较标准的基础xlua样本,没有涉及到复杂的op还原,以及对dat等关键untiy文件的保护逆向。

简单介绍lua与untiy结合的背景,方便代码进行热更新从服务端拉取下发,unity做好相关承接即可也就是热更新

大部分逻辑将在lua中写明,unity基本为一个空壳

国内常见的是,我的老乡小腾腾公司的xlua,近年版本多为5.3的lua版本

简单执行支持流程dump出dll文件,拉进分析。不出意外没啥有用的东西,毕竟我们逆向方向不在这里

此类游戏,前面提到unityandlua,那么unity肯定有存在相关的注册函数来与lua建立联系就如同jni一样(java的native交互),这类函数一般都是固定的loadbuffer,可能根据不同框架函数名字略有区别比如本次的xlua他在ida中具体的实现为int32_t XLua_LuaDLL_Lua__xluaL_loadbuffer(intptr_t L, System_Byte_array *buff, int32_t size, System_String_o *name, const MethodInfo *method),最重要的参数是字节流buff,和脚本名字name。

关键函数拿下,直接手搓Frida的jshook脚本,核心代码逻辑为,hook该函数读写出buff的参数值,根据name作为文件名写入文件存储到我们的路径上

xlua存储后,我们发现常规的lua反编译使用unluac进行反编译失败,字节码验证不对。

在无进行op重写,以及魔改lua的情况下。我们针对lua框架只需进行字节码的一定修复,原为1B 4C 75 61 53 01 19 93

0D 0A 1A 0A 04 04,需将其改为1B 4C 75 61 53 00 19 93

0D 0A 1A 0A 04 04 04,然后再拖入jar进行反编译即可完成。

结合以上思路,编写Python、js两个Frida脚本将整个流程自动化,js复制hook字节流发送给Python端,Python端完成字节码验证、字节码修复、文件写入、拉起jar修复的完整流程即可获得下面的lua文件

获取完成后仅就只需进行正常的逆向改代码,以及hook替换字节流(配合c方向)

本次教程结束,逆向小白啥也不懂。部分名词有误的地方还请见谅。欢迎更多对uniy+lua、游戏引擎、游戏安全方面的有识之士加入初夏团队 到技术军团中找我交流[滑稽]

#【学习交友】点进来,直达技术与交友现场!

#本篇文章,全篇只交代核心逻辑思路,不提供其他脚本代码。希望还未了解此方向的朋友带来一点微不足道的光芒[呵呵]

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

评论列表
请自觉遵守互联网相关的政策法规,严禁发布广告、色情、暴力、反动的言论。
  • 点击我更换图片
  • 全部评论(0
    还没有评论,快来抢沙发吧!