ipa动态库的剥离
最近遇到一个需求,iOS的ipa原包没有了,只有被第三方签过的ipa包。这个包要重新启用,但这个ipa包再次被签名后出现闪退(原因是被注入的动态库引起的,第三方禁止再签)。直接先到的解决方式,移除动态库,直接移除动态库并不行,ipa闪退。
然后查找资料需要对动态库进行剥离。
感谢前辈大咖分享,在此记录。
一 、通过Mach-O文件
MachOview 查看 进制 Mach-O 文件
yololib Mach-O 文件注入
首先,对所需砸壳 ipa 利用Clutch 利用越狱设备砸壳
下载后拷贝到越狱设备 /usr/bin/ 内
通过 ssh 或者 mobileterminal 等进入命令行模式
直接调用 Clutch命令
Usage: Clutch-2.0.4[OPTIONS]
-b --binary-dump <value> Only dump binary files from specified bundleID
-d --dump <value> Dump specified bundleID into .ipa file
-i --print-installed Print installed applications
--clean Clean /var/tmp/clutch directory
--version Display version and exit
-? --help Display this help and exit
-n --no-color Print with colors disabled
其次,我们将制作好的framework注入到输入法的二进制文件,方法如下:
yololib XXXXXXXXXX XXXXX.framework/XXXXX
二 、通过optool命令移除
工具:otool,Xcode自带;optool,需要安装。
1、删除依赖
首先解压包,利用otool 查看二进制。进入目录
otool -L "二进制名称"
找到需要删除的库,

关键一步,找到对应库文件,并删除
optool uninstall -p "要剥离的库" -t "二进制名称"

图上显示successfully 表示已经成功,接下来我们再利用otool查看是否成功。然后在包中删除文件,就可以重新封包了。
打包:
xcodebuild -sdk iphoneos10.3 -target TodaysAppForReSign -configuration Release -arch arm64 -arch armv7 CODE_SIGN_IDENTITY=”iPhone Distribution: victor zhang (BBBBAAAACCCC888899)”
————————————————
版权声明:本文为CSDN博主「Victor.Zhang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013538542/java/article/details/72784165
2、注入
也很简单同样是用到optool工具。
optool install -c load -p "注入动态库的路径" -t "要注入的二进制文件"
注入成功后,将你的三方库放入指定位置即可
注意@executable_path 、@rpath 等路径对应的位置。
3、替换
那如果我们想修改某个依赖怎么办呢。
可以使用 install_name_tool 命令修改动态库的路径,指向 app 二进制文件的同级目录。
install_name_tool old new dylib
install_name_tool -change "老地址" "新地址" "二进制"
网友评论