Framework注入
原理
通过XCode将我们创建的framework扔进app包里面。然后通过工具修改程序的MachO文件,然它可以去加载我们的动态库。
步骤
使用之前自动化重签的XCode工程,在工程里面新增加了一个target,选择framework。然后选择回重签的target,在Build Phases里面添加一个copy files。然后选择为framework,添加刚刚我们创建的framework target。
继续在编译的脚本最后上加入代码
echo "开始注入"
# 需要注入的动态库的路径
INJECT_FRAMEWORK_RELATIVE_PATH="Frameworks/EKHook.framework/EKHook" # 这个脚本的当前路径是app包根目录,Frameworks目录下加上我们要注入的framework
## 通过工具实现注入
yololib "$TARGET_APP_PATH/$APP_BINARY" "$INJECT_FRAMEWORK_RELATIVE_PATH"
echo "注入完成"
yololib这个工具可以在GitHub上找到 https://github.com/KJCracks/yololib,编译好放到usr/local/bin
里面就好了。
然后可以在我们的framework的工程里面写入我们自己的代码。
dylib注入
新建一个target,选择macOS的library。因为创建的是macOS架构的,而我们是要按照在iOS上的,所以先要改架构。按照下图,把base SDK改为iOS的。然后再搜索code sign identity,将证书改为iOS Developer的。
接下来和注入framework一样,在主target里面添加上刚刚的dylib。然后加上下面的注入脚本
# 需要注入的动态库的路径
INJECT_DYLIB_RELATIVE_PATH="Frameworks/libEKDylibTest.dylib"
## 通过工具实现注入
yololib "$TARGET_APP_PATH/$APP_BINARY" "$INJECT_DYLIB_RELATIVE_PATH"</pre>
运行,成功。