1、Framework注入
1.1、通过Xcode新建Framework,将库安装进入App包

1.2、在framework中新建Inject.m文件,写入代码、build
1、在Inject.m中添加代码
#import "Inject.h"
@implementation Inject
+ (void)load {
NSLog(@"--------注入成功--------");
}
@end
2、在build成功后在Wechat包中存在SJHook.framework文件

3、在Wechat的Mach-O文件中不存在SJHook.framework
1.3、给WeChat可执行文件添加SJHook.framework

1、添加SJHook.framework命令
./yololib WeChatDemo.app/WeChat WeChatDemo.app/Frameworks/SJHook.framework/SJHook
2、查看mach-o文件内容

3、替换到ipa包中的WeChat可执行文件,在工程中注释掉脚本,然后编译运行,控制台成功打印hook代码

2、dylib注入
2.1、Xcode创建library文件

2.2、在SJHook.m文件,写入代码
1、在SJHook.m中添加代码
#import "SJHook.h"
@implementation SJHook
+ (void)load {
NSLog(@"--------注入成功--------");
}
@end
2、在Copy Files中添加libSJHook.dylib文件,注意编译顺序,RunScript在CopyFiles上面

3、将SJHook的BasSDK选择iOS

4、将SJHook的Siging选择iOS

2.3、用脚本修改WeChat可执行文件
1、将yololib文件copy到当前功能目录(或者添加到/usr/bin目录下)

2、修改脚本,在最后一行添加执行脚本命令
./yololib "$TARGET_APP_PATH/$APP_BINARY" "Frameworks/libSJHook.dylib"
3、build执行在控制台可以看到成功打印
3、class-dump
class-dump可以导出mach-o的所有OC的类,方法名称
3.1、相关命令
./class-dump -H WeChat -o ./headers
网友评论