准备工作:
像往常一样,创建项目,创建脚本,引入固定的脚本。
动态库 配置
- 添加 动态库 (Dynamic)
IOS 下已经没有这样的库了,framworks 代替了。
- 选择刚刚添加的动态库,编译:
可以发现添加的动态库加载上了,但是是在 Debug 目录下的。
- 切回到工程目标,添加动态库的依赖关系,编译:
报错,但是细看可以看到查找的目录是在 Debug-iphoneos 目录下,肯定没有了,
解决方式:
- 把动态库拷贝到 Debug-iphoneos 目下。
- 修改工程动态库编译路径。
这个环境变量
$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
在不同的 Target 下,是不一样的;
手动修改 $(BUILD_DIR)/Debug-iphoneos
动态库的 Products 目录 配置:
要选择相应的 Target 编译。
这时候 动态库就写入 Mach-o 文件中了:
配置 OK !
自我感觉修改路径着实麻烦,快被搞蒙蔽了,还是手动拖入/拷贝 来的快。
注入过程
上面动态库配置接下来就开始注入过程,其实有没有想到一个问题?
我们添加的动态库是什么架构呢?
先进入 App 包中,cd Frameworks ;
file libQCHOOK.dylib
libQCHOOK.dylib: Mach-O 64-bit dynamically linked shared library x86_64
x86 架构的。
注入:
注入 Mach-o 后,签名就破坏了,但是 编译,xcode 会帮我们重新签名 整个 App, 但是 Xcode 不会帮我们签名整个 frameworks / dylib, frameworks / dylib 在创建后编译时就需要签名了, Xcode 就不会再次签名,所以我们在 shell 中才需要对 framework 签名,签名后 注入 修改的是 Mach-o 文件,注入后,xcode 会重签名。
修改注入脚本:
# ---------------------------------------------------
# 7. 注入我们编写的动态库
echo "开始注入 📱📲"
# 需要注入的动态库的路径 这个路径每次修改 🌴📱📲🌴📱📲🌴📱📲🌴📱📲🌴📱📲
INJECT_FRAMEWORK_RELATIVE_PATH="Frameworks/libQCHook.dylib"
# 通过 yololib 工具注入
yololib "$TARGET_APP_PATH/$APP_BINARY" "$INJECT_FRAMEWORK_RELATIVE_PATH"
echo "注入完成 📱📲"
注入过程:
编译运行,两种不同的架构:
更改架构:
但是仅仅更改这些还不够,一系列的都需要改,BaseSDK...
好吧,忽略掉上面繁琐的过程,还不一定成功,接下来才是真正??正确的修改步伐:
- 修改上面的 BaseSDK,修改 为 IOS
- 接下来,第二步,修改 Code Signing identity 为 iOS Developer。
OK ,就这两步,搞定,其它的都不不要修改。
还有一个低级错误,添加 脚本时,别选错 Target 了,又是二的不行。
编译运行:
一直还是报错,
一直没能找到为什么呢???
yololib WeChat Frameworks/ibQCHook.dylib
手动修改,添加进也不行,
要吐血了!!!