概论
通过操作演示流程可以得知一个知识点:就是通过把framewrok文件或者dylib文件写入程序中,系统会通过自动调用LC_LOAD_DYLIB的方式读取framework或者dylib文件,从而调用我们自己写的代码。通过MachO软件可以查看到MachO文件中所链接到的dylib文件。如图所示:
如图所示:HQHook便是我自己注入进去的
一、通过framework方式注入
1.0 新建工程WeChat,并引入自动签名shell脚本。
- 通过上一篇文章的知识点做一下几个操作:
(1) 新建工程WeChat,然后通过手机运行一次,并通过手机验证描述文件。
(2) 在工程中引入appSign.sh
自动签证脚本
(3) 在project根目录下新建文件夹APP
,把越狱版的微信拷贝进去。
(4) 运行Xcode,测试能否运行微信。
(5) 成功则继续下一步
2.0 创建.framework
,并复制到.ipa
包内
(1) 增加一个名为HQHook
(选择Cocoa Touch Framework
)的Target
。
(2) 并在生成的HQHook
文件夹中添加一个类Inject.{h,m}
,在.m文件中添加如下方法
- (void)load {
NSLog(@"framework:❄️❄️❄️❄️❄️❄️❄️");//如果代码注入则会打印小雪花
}
(3) 编译此Target
生成HQHook.framework
包
(4) 将HQHook.framework
复制到已越狱微信WeChat.ipa
包内的frameworks文件夹内。
(5) 使用yololib
对包内的WeChat MachO文件进行注入动态库HQHook.framework
。在WeChat
包内容目录下执行如下代码命令
# WeChat 是微信包内的MachO文件,就是对这个文件进行注入。
# Frameworks/HQHook.framework/HQHook 通过yololib注入的其实是这个路径的文件。
# 使用yololib之前,先把下载好的yololib文件拷贝到系统目录(/usr/local/bin)下,这样就可以直接使用yololib命令了,否则必须使用全连接执行。
$ yololib WeChat Frameworks/HQHook.framework/HQHook
(6) 重新打包生成.ipa
包,在可以看到PayLoad
文件夹目录下执行下面的命令即可完成打包操作,
$ zip -ry WeChat.ipa PayLoad/
(7) 打包好后,将其他不用的东西都删除,仅保留WeChat.ipa
文件,将此文件复制到跟目录下新建的APP
文件目录中。
(8) 最后再次运行Xcode至手机上
(9) 完毕
- 补充:上面
二、通过dylib方式注入
1.0 新建工程WeChat,并引入自动签名shell脚本。
- 通过上一篇文章的知识点做一下几个操作:
(1) 新建工程WeChat,然后通过手机运行一次,并通过手机验证描述文件。
(2) 在工程中引入appSign.sh
自动签证脚本
(3) 在project根目录下新建文件夹APP
,把越狱版的微信拷贝进去。
(4) 运行Xcode,测试能否运行微信。
(5) 成功则继续下一步
2.0 创建.dylib
,并复制到.ipa
包内
(1) 增加一个名为HQHook
(选择Mac OS
下的Libray
)的Target
。
并在Build Setting
中将Base SDK
的值改成iOS
,再将Code Signing Identity
的值改成 iOS development
即可。
(2) 并在生成的HQHook
文件夹中添加一个类Inject.{h,m}
,在.m文件中添加如下方法
- (void)load {
NSLog(@"dylib:❄️❄️❄️❄️❄️❄️❄️");//如果代码注入则会打印小雪花
}
(3) 编译此Target
生成HQHook.dylib
包
(4) 将HQHook.framework
复制到已越狱微信WeChat.ipa
包内的frameworks文件夹内。
(5) 使用yololib
对包内的WeChat MachO文件进行注入动态库HQHook.dylib
。在WeChat
包内容目录下执行如下代码命令
# WeChat 是微信包内的MachO文件,就是对这个文件进行注入。
# Frameworks/HQHook.dylib 通过yololib注入的其实是这个路径的文件。
# 使用yololib之前,先把下载好的yololib文件拷贝到系统目录(/usr/local/bin)下,这样就可以直接使用yololib命令了,否则必须使用全连接执行。
$ yololib WeChat Frameworks/HQHook.dylib
(6) 重新打包生成.ipa
包,在可以看到PayLoad
文件夹目录下执行下面的命令即可完成打包操作,
$ zip -ry WeChat.ipa PayLoad/
(7) 打包好后,将其他不用的东西都删除,仅保留WeChat.ipa
文件,将此文件复制到跟目录下新建的APP
文件目录中。
(8) 最后再次运行Xcode至手机上
(9) 完毕