【游戏逆向】Lua游戏逆向及破解方法介绍

这篇具有很好参考价值的文章主要介绍了【游戏逆向】Lua游戏逆向及破解方法介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

随着手游的发展,越来越多的Cocos-lua端游开发者转移到手游平台。Lua脚本编写逻辑的手游也是越来越多,如梦幻西游、刀塔传奇、开心消消乐、游龙英雄、奇迹暖暖、疾风猎人、万万没想到等手游。随着Lua手游的增加,其安全性更值得关注,在此归纳一些常用的分析方法,同时介绍一些辅助工具。

Android平台的apk包可以直接解压,找到./lib目录下的so逻辑模块,一个个分析其so,寻找是否内嵌lua引擎(一般情况下,最大的so最有可能内嵌lua引擎)。如果有libcocos2dlua、libhellolua字样,其内嵌lua引擎的可能性极大。

将可疑so拖入IDA,查看lua引擎字符串,找到如图1所示的lua引擎内字符串,那该手游基本就可以确定是内嵌了一个lua引擎,有极大可能是用lua编写游戏逻辑。
【游戏逆向】Lua游戏逆向及破解方法介绍
也可以配合留意下解压出来的assets目录下,是否包含脚本信息。这类信息一般是加密的(也有很多安全意识薄弱的是直接lua脚本明文存放的),但有个明显特征是:有多个文件存放。如图2和图3所示,分别是两款非常火热的Lua手游的assets目录下的lua脚本信息。其中D手游仅是对luac进行加密,而M手游则是连名字也弄个哈希加密。
【游戏逆向】Lua游戏逆向及破解方法介绍
【游戏逆向】Lua游戏逆向及破解方法介绍

破解思路

Lua手游的破解主要分成两步,一步是能获取游戏lua脚本;第二步是替换lua脚本。核心是找到lua脚本,然后修改生效。不同安全级别的手游,相应的lua脚本获取时机点会有所不同。(本质是沿着Lua引擎加载lua脚本的整条加载链,如图4所示,去不断分析找到合适时机点dump和替换。)

另一类思路,是辅助工具常用的方法,比如叉叉的lua手游辅助。只需要获取游戏lua脚本信息,然后无需替换,而是直接加载自身的一个lua脚本(该脚本和游戏脚本在同一个命名空间,可直接修改游戏脚本数据,调用函数)。

一、 直接assets资源可获取lua脚本

这类比较初级,在assets目录下可获得lua或者luac源码。

针对lua源码类型,直接修改然后apktool重打包即可。

针对luac源码类型(luac是lua编译的lua字节码文件,包含lua脚本所有信息,具体可搜索lua字节码文件结构),可以使用unluac等开源项目/工具反编译回lua源码。然后修改直接替换回修改后的lua源码文件即可(lua引擎加载脚本的时候,会识别luac magic number判断是lua源码还是luac,直接替换源码下去是不会影响脚本加载执行的)。

二、 在luaL_loadbuffer函数处获取

luaL_loadbuffer是一个走得比较频繁的加载点。Cocos引擎的lua加载器为cocos2dx_lua_loader,如图4所示,最终都是调用luaL_loadbuffer函数来加载。一般厂商会在这层上面对lua脚本进行解密,既是在luaL_loadbuffer函数获取buff参数可得到解密后的lua脚本。修改逻辑后可以直接在这个点替换回去。
【游戏逆向】Lua游戏逆向及破解方法介绍

三、 更底层的reader函数处获取

lua引擎加载lua脚本最底层是到lua_reader函数。该函数负责最底层的脚本buff遍历,因此在此处dump出来的lua脚本是最纯正的lua脚本,所有加密都已经被去除(修改lua opcode或者引擎逻辑除外)。

不过这个点的获取不到足够的文件信息(文件名、buff index等),需要配合上层函数拼凑lua脚本。

常用工具

一、 IDA工具

可以进行动态调试和静态分析的工具,能在合适的位置下断点,修改指定寄存器和编写IDC脚本配合分析(这里可用来dump luac文件),不多介绍。

二、 ChunkSpy

用于解析lua字节码文件结构,方便luac的学习与阅读。

三、 unluac

Unluac是一个lua反编译器开源项目,可将luac文件反编译为lua代码。针对梦幻西游、刀塔传奇等修改了lua opcode的手游,在静态分析确认还原opcode后,可修改这个项目打包出个对应版本的反编译工具(直接修改OpcodeMap.java里的map,改成对应游戏修改后的Opcode即可)。

常用逻辑修改方法

(1)修改全局变量(全局配置之类的)

(2)update函数的调用逻辑修改(不update或者update多次)

(3)敌人类、主角类、武器类、技能的初始化过程,属性修改

(4)一些过程处理函数的逻辑修改(如伤害计算、命中部位判定等)

实战案例

案例一:修改全局变量(开心消消乐暴分)

在lua_reader函数可直接dump出游戏lua源码,在其/zoo/gamePlay/GamePlayConfig.lua文件中配置了游戏分数奖励等属性,修改如图5 所示为几个特效额外得分即可轻松暴分。
【游戏逆向】Lua游戏逆向及破解方法介绍

案例二:多次调用游戏响应函数(刀塔传奇快速战斗)

这里给出叉叉的一个例子。叉叉针对刀塔传奇有相应的辅助,其中快速战斗实现如图6 所示:是通过HOOK了update函数(lua中函数名是指针,备份原先函数指针,直接重写即可实现HOOK),在update函数尾调用10次tick实现。
【游戏逆向】Lua游戏逆向及破解方法介绍

小结

Lua手游相对来说,还是不够安全的。因为lua引擎不仅是开源的,而且相对python等脚本引擎更简单。外挂作者在lua引擎底层如鱼得水。上面介绍的分析破解思路,就是沿着lua引擎加载脚本的函数链进行分析,找到一个解密后的点dump出脚本,针对脚本进行详细分析,尝试构造攻击点破解版游戏实现外挂功能。文章来源地址https://www.toymoban.com/news/detail-442414.html

到了这里,关于【游戏逆向】Lua游戏逆向及破解方法介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机网络】——前言计算机网络发展的历程概述

     ========================================================================= 主页点击直达: 个人主页 我的小仓库: 代码仓库 C语言偷着笑: C语言专栏 数据结构挨打小记: 初阶数据结构专栏 Linux被操作记: Linux专栏 LeetCode刷题掉发记: LeetCode刷题 算法: 算法专栏  C++头疼记: C++专栏 计算

    2024年02月08日
    浏览(51)
  • 如何开始着手一篇Meta分析 | Meta分析的流程及方法

    Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。R语言拥有完整有效的数据处理、统计分析

    2024年02月07日
    浏览(38)
  • 爬虫逆向破解翻译接口参数

    Python 请求baidu翻译接口:https://fanyi.baidu.com/v2transapi?from=zhto=en 步骤一: 查找构建请求参数 JS 断点发现如下参数:  如图所示参数解析出来对应得值。  from: 翻译文字对应语言代码 to: 需要翻译语言代码 query: 翻译文字 transtype: 固定值【realtime】 sign: 根据翻译文字设定

    2024年01月22日
    浏览(47)
  • 逆向破解学习-单机斗地主

    9000 是成功的代码 ` import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.callbacks.XC_LoadPackage; public class HookComJuneGameDouDiZhu extends HookImpl{ @Override public String packageName() { return “com.june.game.doudizhu”; } } `

    2024年02月13日
    浏览(50)
  • JS逆向案例:破解登录密码

    本人不是专业IT人员,但是对python爬虫这块非常感兴趣,在抖音上看了zhen老师的python全栈直播课程,果断选择加入zhen老师的VIP大家庭,给zhen老师投稿发文章还能挣钱, 50元 。 废话不多说,进入主题。最近在学习 JS逆向 方面的知识,由于之前做过12306的自动抢票软件,因此对

    2024年02月05日
    浏览(40)
  • 逆向破解思路和获取app的代码,脱壳操作(四)

    加壳 什么是加壳? 我们的ipa文件上传appstore,苹果会给我们做一个加密,其实我们运行在内存中的过程是一个加密的壳程序,当然在手机中我们会对他进行解密壳程序,来直接运行可执行的文件,当然苹果这样做的目的是为了保护我们的程序。 脱壳 脱壳的方式 1.硬脱壳:

    2024年02月15日
    浏览(36)
  • 吾爱破解安卓逆向入门教程学习心得(1-4)

    b站视频链接:https://www.bilibili.com/video/BV1wT411N7sV/?vd_source=f767aeec67fd5d5cc2f6ff3e890917d0 源帖:https://www.52pojie.cn/thread-1695141-1-1.html 下载个雷电模拟器,MT管理器,NP管理器 将MT管理器,NP管理器拖到雷电 相关软件地址https://www.aliyundrive.com/s/TJoKMK6du6x 接着在雷电开启root然后重启 具体配置

    2024年02月10日
    浏览(39)
  • [渗透测试]—7.4 逆向工程和二进制破解技术

    在本章节中,我们将深入学习逆向工程和二进制破解技术。我们将尽量详细、通俗易懂地讲解,并提供尽可能多的实例。 逆向工程是指从软件的二进制文件中提取信息,以了解其工作原理和设计思路的过程。逆向工程的主要目的是对软件进行分析、调试、修改等操作,以实现

    2024年02月11日
    浏览(42)
  • python之app逆向破解headers中的Authorization 身份验证 AES

    下载好app 贝壳 2018-5-2 版本 1.还是先抓包 注册入口 2.用jadx-gui打开 直接用jadx-gui打开,因为没有加壳 并搜索Authorization 点击右键 查找用例 3.开始Hook 从以下可以看出: 由 Appid + COLON_SEPARATOR + c 组成的,最后 Base64 所以从第一个入参开始跟踪 String encodeToString = Base64.encodeToStri

    2024年02月03日
    浏览(38)
  • Unity单机手游逆向破解思路(仅供学习参考,禁止用于非法行为)

    一、安卓逆向常用工具 针对安卓单机游戏逆向,尤其是逆向使用Unity引擎开发的安卓游戏,只需了解下面的工具即可。 (1)Android Killer        Android Killer是安卓通用逆向工具,其可以对apk进行反向编译,得到smail代码,用户可以更改smail代码后,对apk重新打包,以实现破解

    2024年01月19日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包