请教下如何重签名微信这种多Targets的App

受阿凹机器人的启发,也想倒腾下微信机器人

目前砸壳,classdump,theos那套已经跑通了,现在卡在部署到非越狱环境上,现有的resign脚本不支持extension,微信这种带多targets的签名不成功。我现在手动重签名的步骤是这样的:

  1. 解压App Store版本ipa

  2. 分别生成3个targets的entitlements.plist codesign -d --entitlements :- OUTPUT_FOLDER/Payload/APP_NAME.app > APP_NAME_ENTITLEMENT.plist

  3. 更换bundle id

  4. 更换provision,cp AD_HOC_PROVISIONING_FILE.mobileprovision OUTPUT_FOLDER/Payload/APP_NAME.app/embedded.mobileprovision

  5. 分别对3个target签名codesign -f -s "CERTIFICATE_NAME_IN_KEYCHAIN" --entitlements EXTENSION_NAME_ENTITLEMENT.plist OUTPUT_FOLDER/Payload/APP_NAME.app/PlugIns/EXTENSION_NAME.appex

  6. 重新压缩生成ipa

但是这样安装不上去,想请教下,关于微信这种带多targets的如何进行重签名?

3 Likes

问题已经解决,是因为没有把多个targets的bundle id都替换成新的。现在顺利重签名并跑在非越狱环境。

步骤中漏了一点,先砸壳,替换二进制执行文件。

哪里看出来是多Target呢?

微信有Watch和Share的扩展

请问楼主,重签的只能是企业证书吗?个人证书我试了下,签完能安装,打开闪退,求教:joy:

问下LZ用什么砸壳的,我用 clutch 提示 com.tencent.xin contains watchOS 2 compatible application. It’s not possible to dump watchOS 2 apps with Clutch 2.0.1 at this moment. 谢谢。

楼主这一步

更换provision,cp AD_HOC_PROVISIONING_FILE.mobileprovision OUTPUT_FOLDER/Payload/APP_NAME.app/embedded.mobileprovision

是需要把mobileprovision文件放到3个target文件夹,还是只需要放到.app文件夹一个就可以了

3个Target都放

砸壳用dumpdecrypted

个人的也可以

楼主我按照你说的 还是失败,我认为主要失败还是第三步更换bundleid这里,可否详细说一下

我现在尝试签名别的APP都可以,但是微信始终不成功.望楼主点播

http://bbs.iosre.com/t/app-store/2863

:joy: 能不能共享下你的目录给我们学习 一下啊~ :joy: 我最近也在学习这个… 一直都不行~

贴主你好:

想请教你一下步骤里面不太明白的地方:

更换bundle id 这一步,是如何更换的?
是把 生成好的 entitlement.plist文件里面的bundle id更换为自己企业证书对应的bundle identifier?
还是说把WeChat.app包里面所有的info.plist文件里面的 bundle id 更改为自己企业证书对应的 bundle identifier?

有出现过微信bundle id 的文件有:
/Payload/Entitlements_for_appstore.plist
/Payload/Entitlements_for_jailbreak.plist
/Payload/Entitlements_wc.plist
/Payload/Info.plist
/Payload/MicroMessenger-Info_for_appstore.plist
/Payload/MicroMessenger-Info_wc.plist
/Payload/WeChat.app/Watch/WeChatWatchNative.app/info.plist
/Payload/WeChat.app/Watch/WeChatWatchNative.app/PlugIns/WeChatWatchNativeExtension.appex
/Payload/WeChat.app/PlugIns/WeChatShareExtensionNew.appex/info.plist
/Payload/WeChat.app/PlugIns/WeChatShareExtensionNew.appex/info_wc.plist

② 另外第五步对3个target重签名,是否为以下三个target:
/Payload/WeChat.app
./Payload/WeChat.app/Watch/WeChatWatchNative.app
./Payload/WeChat.app/PlugIns/WeChatShareExtensionNew.appex

那在watch里面的pluIns用不用也重签名:
./Payload/WeChat.app/Watch/WeChatWatchNative.app/PlugIns/WeChatWatchNativeExtension.appex

求教,这个entitlements.plist应该怎么写呢?

info都改。包含ext的。
应该
entitlement同样要改,这点适用于所有的可执行文件

ldid -e dump然后修改之后牵回去

明白了,非常感谢!

我尝试了一直失败,不知道哪个步骤错了。
你有成功过吗?

证书是用个人的还是企业的? Provisioning Profile 是用发布的还是开发的?