由于公司变动,前任离职。导致原本的ipa丢失,给了一个被第三方签名的企业签名的ipa。而公司又要求再次使用这个ipa企签后投放市场。按照正常流程签名后一直闪退,找寻原因后,发现是由于这个包在开始给其他放签名后被对方注入了动态库,禁止再签名。开始直接删除dylib重签后仍然闪退。
多方查询资料将三方的动态库剥离了出来。
以下记录学习。
使用到的工具有otool 和optool。
1、删除依赖
首先解压包,利用otool 查看二进制。
otool -L "二进制名称"
可以看到demo中被插入了一个三方库FF,接下来我们利用optool来剥离它
optool uninstall -p "要剥离的库" -t "二进制名称"
图上显示successfully 表示已经成功,接下来我们再利用otool查看是否成功。
可以很明显的看到此时二进制中已经没有FF的三方库了。
接下来我们只需要将.app中的FF删掉即可。
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 "老地址" "新地址" "二进制"
有做技术的小伙伴可以一起交流交流~
交流群:685955170