iOS逆向:使用HookZz框架hook游戏“我的战争”,进入上帝模式
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Packages 更新 Dec 19, 2017
images 更新 Dec 18, 2017
testHookzz.xcodeproj 更新 Dec 19, 2017
testHookzz 更新 Dec 19, 2017
.DS_Store 更新 Dec 18, 2017
LatestBuild 更新 Dec 19, 2017
README.md 更新 Dec 19, 2017

README.md

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框架