本文字数:1989字
预计阅读时间:13分钟
01
背景
02
步骤
(ipa 解压)
(显示包内容)
(package content)
(替换bundleID)
从自己新建APP的iPA中获取到新的 embedded.mobileprovision,步骤同上:改为zip -> 解压缩 -> 查看包内容,找到 embedded.mobileprovision 拷贝出来,可以放到要替换的 Payload 目录的外层,如下图:
(新的embedded.mobileprovision)
rm -rf Payload/xxx.app/embedded.mobileprovision
cp embedded.mobileprovision Payload/xxx.app/
生成 Entitlements.plist
/usr/libexec/PlistBuddy -x -c "print:Entitlements " /dev/stdin <<< $(security cms -D -i xxx.app/embedded.mobileprovision) > Entitlements.plist
删除香色闺阁包中的 _CodeSignature
rm -rf Payload/xxx.app/_CodeSignature/
用新的 Entitlements.plist 给香色闺阁包生成新的签名
// 首先获取证书名称
security find-identity -v -p codesigning
// 选择创建APP时使用的证书进行签名
codesign -f -s "证书名称" --entitlements entitl
将 Payload 文件夹在压缩为 ipa 文件,命令如下:
zip -r xxx.ipa Payload/
(Xcode安装ipa)
第一步,获取微信的 ipa 文件,要注意下载 ipa 的可用性,要不然辛苦半天最后发现不能用,误以为是步骤有问题,有可能是包的问题。。。笔者最终可用的是从这里下载的微信 ipa (https://ipa.store/3073.html)
(WeChat_app)
bundleID
、证书和描述文件,替换成自己创建的APP的。然后查看 WeChat.app 的包内容,找到 info.plist,并替换其中的 bundleIdentifier 为自己创建的(WeChat.app 中内容很多,可以按修改日期排序,会相对容易找到要修改的文件),如下图:
(微信 bundleID 修改)
从自己创建的APP中获取到 embedded.mobileprovision ,然后替换 WeChat.app 中的 embedded.mobileprovision,可以直接复制替换。
对比上面的香色闺阁,这里多了重签名 Frameworks 的步骤,需要把 Frameworks 中的所有库,都用自己的证书重新签名一下,Frameworks 中内容如下图(这里可能有非官方的库,一并签名了,不影响):
(Frameworks内容)
重签名的命令如下,重复执行,直到 Frameworks 下所有库都签名完成:
codesign -fs "你的证书" xxx.framework
(替换framework签名)
/usr/libexec/PlistBuddy -x -c "print:Entitlements " /dev/stdin <<< $(security cms -D -i xxx.app/embedded.mobileprovision) > Entitlements.plist
codesign -fs "你的证书" --no-strict --entitlements=Entitl
(重签名列举优劣势WeChat.app)
zip -r xxx.ipa Payload/
最后安装后效果如下:
(最终效果)
07
总结
iOS逆向 应用重签名+微信重签名实战
(https://juejin.cn/post/6844903998110040077)
iOS ipa重签名
(https://juejin.cn/post/7031729444914102303)