关于 iOS HOOK

1.安装 iOSOpenDev,下载地址,选择“iOSOpenDev 1.6-2 Installer”,直接安装“iOSOpenDev-1.6-2.pkg”,这个一般第一次安装都会失败。

安装失败了,请参考解决方案1地址,法案2地址,方案3地址

 

2.安装完后,在xcode新建一个项目会看到下图选项

这里选择CaptainHook Tweak新建一个名为hook的项目

 

3.导入一些依赖库Cycript.framework、libstdc++.6.0.9.tbd、libsqlite3.0.tbd、JavaScriptCore.framework,并且在Build Settings里面的搜索bitcode,将Enable Bitcode选项设为NO

 

4.hook.mm文件写入如下代码(备注1把之前默认生成的代码删除或者注释,备注2 XXAppDelegate需要看你hook的应用的AppDelegate加什么前缀,如果没有前缀就就AppDelegate。微信是以MicroMessenger前缀,至于为啥知道这个前缀,请使用class-dump在微信的Mach-O文件中的头文件信息提取出来,生成对应的.h文件)

#import <Cycript/Cycript.h>
#import <CaptainHook/CaptainHook.h>

#define CYCRIPT_PORT 8888

CHDeclareClass(XXAppDelegate);
CHDeclareClass(UIApplication);

CHOptimizedMethod2(self, void, XXAppDelegate, application, UIApplication *, application, didFinishLaunchingWithOptions, NSDictionary *, options)
{
    CHSuper2(XXAppDelegate, application, application, didFinishLaunchingWithOptions, options);
    
    NSLog(@"## 我要hook了 ##");
    CYListenServer(CYCRIPT_PORT);
}

__attribute__((constructor)) static void entry() {
    CHLoadLateClass(XXAppDelegate);
    CHHook2(XXAppDelegate, application, didFinishLaunchingWithOptions);
}

 

 5.build (记得选择用真机,不要用模拟器)。build 完后的结果会放在 Xcode 项目缓存目录 ~/Library/Developer/Xcode/DerivedData,打开这个文件夹后找到前缀和项目名一致的文件夹,找到里面的 Build/Products/Debug-iphoneos ,把 hook.dylib hook.dylib.dSYM 两个文件先拷贝出来待用。

 

6.1.你要hook的应用需要脱壳的应用或者企业级应用,脱壳需要越狱手机,没有的话也不碍事,去pp助手等第三方软件找到脱壳的应用(以微信为例)

 

6.2.找到应用对应的二进制文件,查看包含哪些架构,终端输入:

file /Users/xxx/Desktop/HOOK/微信-6.6.5\(越狱应用\)/Payload/WeChat.app/WeChat

输出如下,看到微信包含两个架构armv7和arm64

6.3.可以使用otool来输出app的load commands,查看cryptid标志位来判断app是否被加密:1代表加密,0代表被解密

otool -l /Users/xxx/Desktop/HOOK/微信-6.6.5\(越狱应用\)/Payload/WeChat.app/WeChat | grep -B 2 crypt

输出如下:

 

6.4.还有一个重要的一点,删除WeChat.app/下的PlugIns和Watch文件(因为微信有多个targets,会导致下面的安装ipa还是会闪退)

 

6.5.使用yololib工具对二进制文件进行dylib的注入,终端输入:

./yololib /Users/xxx/Desktop/HOOK/Payload/你要hook的应用名.app/你要hook的应用名 hook.dylib

 

7.使用MachOExplorer软件查看loadCycript.dylib是否注入成功(这里不推荐使用MachOView,因为它不更新了,还TMD经常闪退这是不能忍受的)

 

8.将我们注入的dylib文件放到注入的应用的GAMECO.app目录下,终端输入:

cp hook.dylib /Users/xxx/Desktop/HOOK/Payload/你要hook的应用名.app/

 

9.重签名应用,推荐使用名为iOS App Signer的Mac上的应用,当然也可以用命令行进行重签名,请参考

 

10.使用mobiledevice工具安装重签名的ipa,终端输入:

./mobiledevice install_app xxx.ipa

 

11.打开刚才安装hook后的应用,使用蒲公英或者其他的软件查看log,可以看到我们hook的log信息

 

转载于:https://www.cnblogs.com/DWdan/p/8510177.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值