动态库注入

Framework注入

原理

通过XCode将我们创建的framework扔进app包里面。然后通过工具修改程序的MachO文件,然它可以去加载我们的动态库。

步骤

使用之前自动化重签的XCode工程,在工程里面新增加了一个target,选择framework。然后选择回重签的target,在Build Phases里面添加一个copy files。然后选择为framework,添加刚刚我们创建的framework target。

动态库注入_第1张图片
动态库注入1.png

继续在编译的脚本最后上加入代码

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的。

动态库注入_第2张图片
动态库注入2.png

接下来和注入framework一样,在主target里面添加上刚刚的dylib。然后加上下面的注入脚本

# 需要注入的动态库的路径 
INJECT_DYLIB_RELATIVE_PATH="Frameworks/libEKDylibTest.dylib"
## 通过工具实现注入
yololib "$TARGET_APP_PATH/$APP_BINARY" "$INJECT_DYLIB_RELATIVE_PATH"

运行,成功。

你可能感兴趣的:(动态库注入)