各种Hook框架的理解

各种Hook框架的理解,第1张

除了支持上面两种Hook方式外,越狱环境还支持MobileSubstrate(CydiaSubstrate)里面的MSHookFunction

现在我已知的大致有inlinehook、fishhook、runtime hook等等

目前已知的只能在越狱环境中实现,如CydiaSubstrate的MSHookFunction就是一种inlinehook方式,其原理是对C函数的开头修改了汇编指令,使其跳转到新的实现,执行完成后再返回执行原指令。

MSHookFunction即能hook带符号的系统和自定义的C函数,也能hook只有地址的函数,如在IDA/Hopper中显示为sub_xxx的函数

CydiaSubstrate中还有一个MSHookMessageEx函数,主要是用来hook OC方法的,其原理就是基于OC的runtime,所以这个函数的使用在越狱和非越狱状态下都能正常工作。

它利用 MachO 文件加载原理,通过修改懒加载和非懒加载两个表的指针达到 C 函数 Hook 的目的 参考这篇博文

还有这篇

在hook环境下运行的原理及解决方法如下:

原理:Hook是Windows中提供的一种用以替换DOS下“中断”的系统机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就会收到系统的通知,这时程序就能在第一时间对该事件做出响应。

解决方法:直接搜索apk isGooglePlayServicesAvailable这个函数,使其返回结果为O即可,然而此时手机若没有谷歌框架,apk可以正常运行。

1.准备好一个自己写的app,用adhoc的证书打包

2.打包以后可以装在测试手机上

3.对这个ipa进行解压缩,得到一个app文件(先将.ipa重命名为zip,然后在解压得到.app文件)

4.显示包内容,查看原始包的内容

5.可以用命令行查看(注意当前路径). $otool -L YoungTest

6.安装iOSOpenDev

7.编写Hook,只在Hook1文件里写,其他文件均未改动

OSOpenDevDevice设置你设备的IP(例如:192.168.1.10).

iOSOpenDevInstallOnProfiling布尔值 默认为YES, 是否在build forprofiling的时候直接远程安装到设备上.

iOSOpenDevPath不要修改此项,是iOSOpenDev的安装路径.

iOSOpenDevRespringOnInstall布尔值 默认为YES,是否在安装后重启SpringBoard.

iOSOpenDev默认安装在/opt/iOSOpenDev里,在里面可以找到undocumentapi的头文件

8.把Hook1跟yololib都放到包里面(这个叫yololib的工具可以帮我们直接进行dylib的注入)

9.用yololib把hook注入到app里面

$./yololib YoungTest Hook1.dylib

10.检查一下,发现注入成功

11.注入成功以后把yololib删除,把_CodeSignature删除,把embedded.mobileprovision替换成自己的配置文件。(要在开发者账号里生成一套APP证书)

12.生成原app的配置信息(注意当前路径)

$ codesign -d --entitlements :- /Users/iOS/Desktop/ADHoc/Payload/YoungTest.app >sss.plist

13.对Hook1, YoungTest ,embedded.mobileprovision文件进行签名

youngstardeMacBook-Pro:Payload iOS$ codesign -f -s "iPhone Distribution: MingXing Yang (AX6366456P)" YoungTest.app/Hook1.dylib

youngstardeMacBook-Pro:Payload iOS$ codesign -f -s "iPhone Distribution: MingXing Yang (AX6366456P)" YoungTest.app/Sengled.mobileprovision

youngstardeMacBook-Pro:Payload iOS$ codesign -f -s "iPhone Distribution: MingXing Yang (AX6366456P)" YoungTest.app/YoungTest

如图所示

14.对整个app文件签名,根据刚生成的配置文件

codesign -f -s "iPhone Distribution: MingXing Yang (AX6366456P)" --entitlements sss.plist YoungTest.app/

15.HOOK注入已经完成,会退到上个文件,找到app,

16、通过iTunes生成ipa,在用iTool安装到手机上即可

我中间也走了很多弯路,主要是证书的混淆,最好在钥匙串里其他没用的证书都删除了,留下自己要打包的这个证书。已经尽可能的详细说明,有问题可以留言!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11524401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存