ios游戏破解-王铲铲的致富之路

王铲铲的致富之路-逆向分析

游戏介绍

版本:1.2.4
设备:xsmax ios 14.8
游戏开发环境:Unity

游戏玩法

看着他挖,但是你需要钱去升级设备、场子等等,总之有钱!这个游戏就是你的天下!!!
游戏不需要额外充钱,但是会一直有广告
在这里插入图片描述

逆向过程

砸壳

获得未加密的ios app

砸壳环境

  1. 实体机xsmax 系统版本14.8 已经越狱
  2. Mac os环境 需要装usbmuxd,Windows下没找到能解决该问题的方法
  3. 均安装frida 同一版本就行
  4. Frida-ios-dump

开始砸壳

  1. 确保frida能正常连通
    使用usb连接手机设备,使用命令frida-ps -U 该命令用于查看USB连接设备当前运行的进程。
    待补充图

  2. 使用iproxy命令转发22端口,iproxy 2222 22
    在这里插入图片描述

  3. 修改Frida-ios-dump 脚本中的root密码

  4. 输入命令 python dump.py -l 列出当前设备中的应用程序
    [图片]

  5. 输入命令 python dump.py com.mojike.digearth ,开始砸壳
    [图片]

解包分析

复制dump中的ipa文件到Windows下,进行下一步分析。
首先重命名.ipa为.zip 并解压
在这里插入图片描述
简单说明一下重要的目录结构,该游戏是Unity开发。

Data 目录

在这里插入图片描述
data.unity3d文件是游戏的资源文件,可以通过AssetStudio.net6 或者 AssetRipper_win_x64 进行查看或者分析
RaW 文件夹里面放着一些分享时的图片资源
Managed 文件夹放着ll2cpp生成后的文件 非常重要!!!
mono 放着数据库相关文件

Frameworks目录

在这里插入图片描述
UnityFramework.framework 里面放着游戏编译后的object-c程序 很重要
KSAdSDK.framework 广告框架,没有详细 研究
TTNetworkManager.framework 网络相关,没有详细研究

ll2cpp反编译

利用 Il2CppDumper-net6-v6.7.25 进行反编译

可执行文件位置

在这里插入图片描述
符号表数据位置global-metadata.dat
在这里插入图片描述
反编译后的数据信息
在这里插入图片描述
其中stringliteral.json 是字符串表信息,包含着游戏字符串和对应偏移地址,il2cpp.h 是object-c的结构体信息
dump.cs是.net反编译后的源码信息,DummyDll中包含的是提取出来的所有游戏DLL信息与dump.cs内容一致。

逆向分析主程序

首先通过ida打开程序
在这里插入图片描述
接着利用脚本导入之前得到的il2cpp.h文件,和字符串文件信息
在这里插入图片描述

这几个都可以导入,等待20-30分钟(函数量非常大!!)
在这里插入图片描述
接着就能看到 字符串已经可以分析出来了,函数名称也已经恢复,接着通过字符串文件,搜索我们的需求 !!!!
通过关键字money coin 搜索到一个关键信息
在这里插入图片描述
ida中输入g,复制地址跳转
在这里插入图片描述
发现有几个函数引用了该字符串,get_GameCoin、set_GameCoin,因为目的是要改钱,所以set对我们更重要
在这里插入图片描述
根据value进行设置,看看哪里用了set
在这里插入图片描述
发现有CostCoin函数和AddCoin函数都用到了该函数,所以这里有两种改法,一个是修改AddCoin时设置钱的数量,一个是修改花费时不扣钱。
在这里插入图片描述
可以看到增加钱的逻辑,是查询现有的钱然后加上获得的钱,这里修改的话就会造成一个问题!!!初始化的时候钱为0.不太好改动,所以我打算改动了花费处
在这里插入图片描述
可以看到,我把花费时应该-coin的位置改成了+coin,这样的话每次花钱都会价钱,达到了一个修改金钱的目的
在这里插入图片描述
改法比较简单,把原本FSUB改成FADD就可以了

月球模式patch

除了钱还有个新出的模式 月球模式,这个也是一种钞票,我们用同样的方式进行逆向
在这里插入图片描述
在这里插入图片描述
又看到熟悉的ADD和Cost,同样减改成加
在这里插入图片描述

改法相同FSUB改成FADD
在这里插入图片描述

打包重签名

这个过程方法有太多太多,这里为了能尽快玩上游戏,我们就走最朴实无华的路线。
首先将patched后的游戏文件替换掉原本的文件
在这里插入图片描述
把该文件复制到对应位置,并且进入这个位置,右键压缩文件在这里插入图片描述
压缩后,重命名Payload.zip为Payload.ipa
打开爱思助手!!!,使用里面的签名工具
在这里插入图片描述
签名完成后,就能安装使用了

在这里插入图片描述

最终结果

成功修改两个金钱,由于文章时隔3个月才发布,游戏早已经卸载,具体效果大家可以复现后查看。

待修改

广告也挺烦人,有一个函数用来控制广告相关的展示,以后空闲了再来回头看看这个怎么处理!

  • 19
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们使用 Unity 引擎开发游戏时,会使用 C# 语言编写游戏逻辑代码,而这些代码最终需要通过 Unity 引擎转换为原生代码才能在目标平台上运行。在这个过程中,Unity 引擎将 C# 代码编译为 IL(Intermediate Language)代码,并使用 Mono 运行时环境来执行这些 IL 代码。而当我们使用 IL2CPP 模式进行构建时,Unity 引擎将 IL 代码转换为 C++ 代码,并使用目标平台的 C++ 编译器将其编译为原生代码。 在 IL2CPP 模式下,Unity 引擎会使用 global-metadata.dat 文件来存储游戏中的元数据信息。而 Il2CppDumper 工具就是通过解析 global-metadata.dat 文件,来获取游戏中的类型和成员信息,并将其转换为可阅读的 C++ 代码。具体来说,Il2CppDumper 工具的解析流程如下: 1. 读取 global-metadata.dat 文件,并解析出各个表的大小和偏移量等信息。 2. 解析 TypeDefinition 表,获取游戏中所有的类型信息,包括类型的名称、基类、实现的接口、字段、属性、方法等信息。 3. 解析 FieldDefinition 表,获取游戏中所有的字段信息,包括字段的名称、类型、偏移量等信息。 4. 解析 MethodDefinition 表,获取游戏中所有的方法信息,包括方法的名称、参数列表、返回值类型、代码块等信息。 5. 将获取到的所有信息转换为 C++ 代码,并输出到指定的文件中。 需要注意的是,Il2CppDumper 工具只能用于解析 Unity 引擎使用 IL2CPP 模式构建的游戏,对于使用 Mono 运行时环境构建的游戏则无法解析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值