luoyanbei / testHookzz

iOS逆向:使用HookZz框架hook游戏“我的战争”,进入上帝模式

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

testHookzz

iOS使用HookZz框架hook游戏“我的战争”(英文名“This war of mine”),使其进入上帝模式,实现作弊。

代码仅供学习交流,感谢您 帮忙在右上角 点个“⭐️”,非常感谢

功能介绍

本项目主要目的是学习使用HookZz框架做iOS逆向

本项目中使用的游戏逆向思路源于ios游戏This war of Mine 辅助开发实录 ,文中介绍该游戏可进入上帝模式,对人物属性的hungry,sick,wounded等属性做了修改,这可能是官方预留的内挂,通过特定途径,可以开启上帝模式,也就是作弊模式,人物不会饥饿受伤。原文是在静态分析中把if语句的跳转汇编代码改成nop,使游戏跳转到上帝模式,而当前项目是动态修改寄存器的值,实现相同的目的。

开发和使用环境

开发环境:TheOS + MonkeyDev + Xcode

分析工具:静态分析用IDA,动态分析用lldb和debugserver

使用环境:越狱的苹果手机或iPad

开发语言:OC

游戏版本:1.13.1

详细步骤

  • 在IDA中定位到目标位置

1.把游戏的二进制文件“TWoM”拖入IDA分析,选择分析64位版本。

2.分析完成,打开“Strings window”窗口,搜索"GodMode"关键字,可以得到“GodMode Enabled”和“GodMode Disabled”。

搜索结果

3.根据搜索结果查看对应的汇编语句,可见“GodMode Enabled”和“GodMode Disabled”是一个条件分支。

1

4.查看汇编语句,使用动态调试,在 0x10015CD44 处下断点。执行到断点,打印w8的值为nil,继续执行,代码进入了“GodMode Disabled"分支。于是当下次执行到断点时,我尝试使用"register write w8 4"修改w8寄存器的值为4,继续执行,代码进入了“GodMode Enabled”分支。得出结论:修改w8的值就可以进入上帝模式。

1

5.使用HookZz框架中的 ZzBuildHookAddress 方法来修改w8寄存器的值。

6.“GodMode Enabled”和“GodMode Disabled” 都执行了 sub_10025F9EC 函数,根据ios游戏This war of Mine 辅助开发实录的讲解,这貌似是一个打印函数,使用HookZz的ZzBuildHook 来hook这个函数,在这里添加一条打印语句。

3

7.在Xcode中使用MonkeyDev框架创建LogosTweak项目,并编写代码。

8.编译tweak项目并安装到越狱设备,打开游戏app,查看Xcode输出的系统日志,发现输出了“GodMode Enabled”,这可以作为进入上帝模式的依据。

打印如下:

    Dec 18 22:41:16 Kainuo-kwj TWoM[95161] <Warning>: 测试---x8 is:开始
    Dec 18 22:41:16 Kainuo-kwj TWoM[95161] <Warning>: 测试---request(x8) is: 0
    Dec 18 22:41:16 Kainuo-kwj TWoM[95161] <Warning>: 测试---request(x8) 修改后is: 4
    Dec 18 22:41:16 Kainuo-kwj TWoM[95161] <Warning>: 测试---日志:GodMode Enabled

结束

  • 代码仅供学习交流,感谢您 帮忙在右上角 点个“⭐️”,非常感谢

  • 大神开发的框架非常好用:

    HookZz框架

    MonkeyDev框架

关注公众号:逆向APP

About

iOS逆向:使用HookZz框架hook游戏“我的战争”,进入上帝模式


Languages

Language:C 53.2%Language:Logos 25.5%Language:Objective-C++ 21.3%