Zhang
1
我说真的。硬编码所有系统版本地址的黑灰产真是努力Cry
起源于下午闲的没事的个人Research,这一思路我首先在数月前在我的博客上提到过 http://mayuyu.io/2017/04/05/2017-04-04-Random-Thoughts-On-Hooking-Short-Functions/
因为MG函数的特征非常固定。即MGCopyAnswer的第一个branch为真实跳转地址。所以我们可以通过内嵌Capstone Engine来实现自动判断。而非黑灰产努力cry的硬编码所有系统offset再加几十个switch case
所以实现步骤即为:
- 获取函数实现地址
- 开始CSE解码并计算第一个分支指令
- 对目标地址使用MSHF
- 开始刷墙赚钱
PoC代码:
(PoC的意思是 PROOF OF CONCEPT )
https://github.com/Naville/MobileGestaltHooking
你可以在我的博客上看到更多 http://mayuyu.io/2017/06/27/HookingMGCopyAnswerLikeABoss/
1 个赞
Zhang
3
已修正昨天没好好读汇编也没认真测试搞出的错。应该是第一个branch
Zhang
5
disasm的参数可以修改因为我们不需要disasm那么多指令。
当然带来的性能影响也微乎其微其实无所谓
对于MGCA, 其实99%的情况只需要解析 B 这一条指令, 手动写几行代码来解析也足够
zjjno
(zjjno)
8
玩了一把 发现这行log注释掉就闪退 log出来就ok是什么情况 还有想回车换行一回车就回复出去了 尴尬
tinkl
(逆袭者)
9
除了要hook MobileGestalt的一些参数外,也需要改USB串口,IOKit驱动核心函数:IONotificationPort,这样插上itunes显示的序列号和UDID都是更改过的数据,对于养号,一键新机,aso都是很有用处。
2 个赞
zjjno
(zjjno)
12
张总 淡定 have 啊 try 我是不会骗人的,总感觉简单的现象背后有个大坑
Zhang
13
我知道啊。我的意思也是为啥不log就崩所以真他妈惊了卧槽
PC连接主要是lockdownd提供的数据, HOOK这个进程才是关键