吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 20794|回复: 108

[iOS 原创] iOS逆向-Unity3D游戏辅助开发

  [复制链接]
平而不凡 发表于 2019-12-6 15:17
本帖最后由 平而不凡 于 2019-12-6 15:21 编辑

Unity3D(iOS)游戏辅助开发

前言:

看了庆哥 旅行的青蛙Unity游戏逆向修改--iOS篇之后,着手撸了个游戏试了试。

游戏名:弓箭英雄

英文名:Archero

BundleID: com.habby.archero

iTunes Store链接:itms-apps://itunes.apple.com/app/id1453651052

Hack Features:

英雄攻击:秒杀(6666)

英雄攻速:一秒5刀

英雄弹道速度: 总之很快

敌人伤害 : 1

敌人弹道速度: 慢得一批

工具:

monkeyDev

Il2CppDumper

IDA Pro 7.0

frida-ios-dump

HookZz

LBGModifyMemoryValue

0x0: 砸壳

使用frida-ios-dump一键提取Archero.ipa

0x1: 执行文件丢进IDA解析

0x2: Il2CppDumper还原符号

将得到两个重要的文件:

    dump.cs
    script.py

dump文件是给自己做参考的,里面的方法 都标注有地址。

script.py这个是辅助IDA解析使用的。

dump.cs:

34E798E6216B7896CFA6847E0550EDD7.jpg

script.py:

222.png

0x3: 分析

dump.cs文件中包含了所有方法名、类名、偏移地址等等,可以直接从字符串入手,搜索:Attack、Speed等关键字,找到偏移之后,IDA中跳转地址。

以攻击力方法:0x101DB0AA8
333.png

IDA中找到地址,之后F5转到伪代码:
444.png
逻辑很简单,参数a1是一个地址(对象),a1偏移136后 *取值,拿到攻击力返回。

0x4: hook

关于hook,有多种办法可以修改攻击力的返回值,本次使用的是HookZz的ZzBuildHookAddress 和 LBGModifyMemoryValue的ModifyMemoryValue方法。

    void *hack_Address_ptr_101C3B128 = (void *)(_dyld_get_image_vmaddr_slide(0) + 0x101C3B128 ); //ASLR+函数地址

    ZzBuildHookAddress((void *)((unsigned long)hack_Address_ptr_101C3B128 ), (void *)((unsigned long)hack_Address_ptr_101C3B128 + 4), getpid_pre_call_sub_101C3B128, getpid_half_call_sub_101C3B128,TRUE);

    ZzEnableHook((void *)((unsigned long)hack_Address_ptr_101C3B128));

代码运行到ASLR+ 0x101C3B128 地址后,触发 getpid_pre_call_sub_101C3B128getpid_half_call_sub_101C3B128 方法.

方法触发后,在汇编 LDR W0, [X0,#0x88] 之前,改变(a1 + 136)内存地址的值,LDR等同于属性的 get 方法:
555.png
打包运行,效果很明显 神挡杀神。但是有个小小问题,你可以秒别人,别人也可以秒你,也就是说攻击力这个方法,游戏英雄在使用,怪物也在使用。

继续逆向:

从IDA的伪代码看到:return *(unsigned int *)(a1 + 136),a1的136偏移得到攻击力,那说明英雄的对象模型和怪物的模型是一样的,都是136偏移的那个属性代表攻击力,嗯~ (工厂模式 + 继承)。
通过测试发现怪物攻击我时,*(unsigned int *)(a1 + 136)的值是固定的,比如200 、 150 而英雄的却是0,由此可以推断,英雄的攻击力是(武器装备+暴击+各种BUFF)组合而成的,而英雄本身是无伤害的,通过这个关键点逻辑,稍微修改修改代码:
666.png
这下打包运行后,效果就能接受了,怪物子弹攻击始终为1 ,而英雄的攻击伤害爆表(嗯~绿箭侠)。

其余攻击速度,子弹弹道速度都可以按上述方法逐一hook。

总结

1.本次逆向,站在了众多巨人肩膀之上。很遗憾,本人只做了一点微小的工作。

2.关于LBGModifyMemoryValue 是拆解、重新封装了DLGMemor.framework,可以在lldb中 po命令 写内存,读内存。

3.最终成品并没有Mod Menu Hack,也不需要,那东西给没有源码的用户用的。作用也只不过是修改各种hack的值。(当然狗屎灰会加个登录or授权框)。

4.关于迁移到非越狱,也可以借助HookZz来实现。

以下是非越狱效果:

RPReplay_Final1575613479.2019-12-06 14_29_17.gif
[font=Consolas, Monaco, Andale Mono, monospace][color=#f8f8f2][backcolor=rgb(35, 36, 31)]

免费评分

参与人数 37吾爱币 +30 热心值 +36 收起 理由
zircon2 + 1 + 1 热心回复!
自去经心 + 1 热心回复!
xu6456338 + 1 谢谢@Thanks!
华月方昊 + 1 + 1 谢谢@Thanks!
zt8594 + 1 谢谢@Thanks!
Mgyj + 1 谢谢@Thanks!
yu4608105 + 1 我很赞同!
小p菇 + 1 我很赞同!
DONE510 + 1 + 1 我很赞同!
七个涨停一倍 + 1 鼓励转贴优秀软件安全工具和文档!
exluku + 1 + 1 贼棒!
86527abc + 1 + 1 我很赞同!
17376777302 + 1 热心回复!
bugof52pj + 1 + 1 谢谢@Thanks!
siuhoapdou + 1 + 1 热心回复!
kibaamor + 1 + 1 用心讨论,共获提升!
zpzb + 1 + 1 我很赞同!
xiong_online + 1 + 1 用心讨论,共获提升!
shb123 + 1 + 1 我很赞同!
安倚静轩 + 1 + 1 我很赞同!
666789kk + 1 + 1 谢谢@Thanks!
baixiuxiu + 1 + 1 谢谢@Thanks!
kw2046 + 1 热心回复!
zhangkun910625 + 1 + 1 厉害厉害,庆哥那个青蛙的好早了啊
hiodis + 1 + 1 谢谢@Thanks!
zsynb + 1 + 1 我很赞同!
18587205491 + 1 + 1 楼楼出几个安卓的呗,找找思路
温柔的一哥 + 1 + 1 热心回复!
CrazyNut + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kentish + 1 + 1 谢谢@Thanks!
CG_illusion + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zxcnny930 + 1 + 1 用心讨论,共获提升!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
cheninye + 1 谢谢@Thanks!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fei8255 + 1 + 1 用心讨论,共获提升!
loddv + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 平而不凡 发表于 2020-3-18 11:34
射鼠鱼 发表于 2020-3-2 19:55
你好 我也逆向了这个游戏, 但是我是直接用汇编修改了攻击力,  这里我不懂你的       0x101C3B128 这个地址 ...

ASLR 这个虽然是随机变化的,但是程序运行后是可以拿到起始地址的,起始地址+没有偏移的函数地址 就等于当前程序进程的函数地址。getpid_pre_call_sub_101C3B128 、 getpid_half_call_sub_101C3B128折两个函数是自定义的,后缀用到的就是函数地址,自己看的时候容易看明白一些,HookZz是一个大神写的, LBGModifyMemoryValue 这个是我自己封装的DLGMemor.framework。 关于HookZz 还能静态hook 自己去他github看看就知道
射鼠鱼 发表于 2020-3-2 19:55
你好 我也逆向了这个游戏, 但是我是直接用汇编修改了攻击力,  这里我不懂你的       0x101C3B128 这个地址是怎么拿到的,  ASLR+函数地址
不是应该不确定么. 还有  getpid_pre_call_sub_101C3B128 、 getpid_half_call_sub_101C3B128 这两个函数名 是怎么知道的呢? 还有 HookZz和 LBGModifyMemoryValue 是两个库吗?  小弟接触逆向不就, 希望大佬解惑....
回忆小马甲 发表于 2019-12-6 15:31
猛虎嗅蔷薇 发表于 2019-12-6 15:36
是不是还需要一mac系统的电脑,已经越狱的手机可不可以
 楼主| 平而不凡 发表于 2019-12-6 15:43
猛虎嗅蔷薇 发表于 2019-12-6 15:36
是不是还需要一mac系统的电脑,已经越狱的手机可不可以

这个就是越狱的开发,系统需要MAC系统,电脑不一定非要MAC
csp0227 发表于 2019-12-6 15:54
学习了学习了,感谢大佬分享
wudi5299122 发表于 2019-12-6 16:07
感谢分享,但是硬件限制着,只能仰慕了
loddv 发表于 2019-12-6 16:15
很好 谢谢
codershmily 发表于 2019-12-6 16:27
楼主 很厉害
 楼主| 平而不凡 发表于 2019-12-6 17:08

没有 没有!  小打小闹
涛之雨 发表于 2019-12-6 17:21
能搞得起iOS的都是大佬。。。
证书怎么样可以免费白嫖。。。
买不起啊。。。。
25f4b5aa86cbc955.jpg
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2020-7-7 10:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表