目录
运行环境
2022年9月
MBP M1 macOS Monterey 12.4
iPhone 8 iOS 14.2
Human Proficient in iOS & Cycript development
控台环境
环境 | 提示符 |
---|---|
#mac | $ command |
#iPhone | Toki-iPhone: root# command |
#cycript | cy# command |
一、创建挂钩项目
本期内容依然是以前几期的受害者TKVictim为目标,所以挂钩命名为 TKVictimHook。
1. 新建iOS项目 TKVictimHookDemo
XCode->File->New->Project...
2. 实现Hook代码
通过Swizzle技巧替换目标函数
//CodedLock+Hook.h
@interface CodedLock (Hook)
@end
//CodedLock+Hook.m
#import <objc/runtime.h>
@implementation NSObject (Hook)
+ (void)load {
Class cls = NSClassFromString(@"CodedLock");
Method originalMethod = class_getClassMethod(cls, NSSelectorFromString(@"unlock:"));
Method newMethod = class_getClassMethod(cls, NSSelectorFromString(@"unlock_hook:"));
method_exchangeImplementations(originalMethod, newMethod);
}
+ (BOOL)unlock_hook:(NSInteger)code {
return YES;
}
@end
3. 构建Hook.framework
执行build
命令
$ xcodebuild -project TKVictimHook.xcodeproj -target TKVictimHook
执行后会在当前目录生成build文件夹,Framework路径为 build/Release-iphoneos/TKVictimHook.framework
4. 重签名Hook.framework
framework和app的重签名方式一样,把之前用的embedded.mobileprovision
文件复制到framework中,然后执行签名命令
$ codesign --continue -fs 1234567890QWERTYUIOPASDFGHJKLZXCVBNM --entitlements embedded/entitlements.plist Hook.framework
5. 安装yololib
yololib源码地址 https://github.com/KJCracks/yololib
前往项目根目录,编译yololib项目
$ xcodebuild -project yololib.xcodeproj -target yololib
yololib项目编译后可以在build/Release/yololib
路径找到可执行文件
6. 注入Hook.framework
- 进入 app 目录
- 将Hook.framework添加到根目录的Frameworks目录下,如果Frameworks不存在就创建一个
- 执行yololib注入——由于yololib代码限制,注入必须在app根目录下执行(懒的自己写了,先凑合用)
yololib TKVictim ./Frameworks/TKVictimHook.framework/TKVictimHook
7. 对app重签名
请参考前文 【Toki从零学iOS逆向】六、App重签名
8. 安装、测试
把装好挂钩的app安装到手机,执行TKVictim。
现在只需点击一下即可解锁。
挂钩添加成功!