美文网首页
iOS重签名ipa包

iOS重签名ipa包

作者: Joshua520 | 来源:发表于2020-07-10 17:33 被阅读0次

背景

我们上包流程是在测试完成后,再出正式包上传,每次都需要重新替换包名、参数等信息,及其麻烦、很容易没有修改完完,导致重出。引出了重签名的需求。在本文中,我将说明如何重新签署iOS应用程序,以便我们生成可部署到测试设备的IPA。

代码签名

作为一项安全措施,Apple要求其信任的开发人员对在其设备上运行的所有代码进行数字签名。签名的工作方式类似于SSL证书在网站上的工作方式。我将使用这种类比,因为大多数人已经习惯了Web,并且这些概念(即使他们不知道其名称)也很有意义。

SSL证书和CA
要在您的网站上使用HTTPS,您需要具有数字证书。该证书包含有关您网站的信息,任何人都可以验证。您可以在网站上使用该证书来加密用户与服务器之间的通信。但是您的用户需要能够检查您所使用的证书的有效性。用户如何验证它?

首先,应该为您获得的证书由受信任的实体签名,该实体会验证您的身份。否则,想象一下,任何人都可以生成数字证书并假装成您的银行。为此,您的浏览器已预装了许多受信任的证书颁发机构(CA),并且您的浏览器将仅接受由任何这些CA签名(生成)的证书。您的浏览器通过查询CA来验证您网站上的证书。

要获得证书,首先需要生成一个CSR(证书签名请求),在其中指定所需的证书的详细信息。此CSR发送到CA。CA会验证您提交的数据是正确的,他们可能会要求您提供域所有权的证明,以及任何其他可以证明您身份的文档。他们验证了所有内容后,就会生成证书并将其发送回给您。您可以在您的网站上使用该证书,并且每个人都感到高兴和安全(高估)。

这是有关如何为您的网站获取SSL证书的一般想法,并且相同的概念也适用于iOS应用程序。

苹果是iOS应用程序的唯一有效CA

因此,如您现在可能想象的那样,或者如果您已经使用Apple创建了Developer帐户,则过程几乎是相同的。发送CSR后,您会从有效的证书颁发机构(在我们的情况下仅是Apple)获得证书。

有了证书后,就可以开始数字签名代码了。使用证书对数字进行代码签名将识别您创建的任何应用程序。Apple相信这是您的代码,因为您是唯一有权访问该证书的私钥的人。

希望您可以更好地了解证书的工作方式。我不想做太多细节,因为那里有很多好的资源可以解释这一点,而这篇文章不是要了解代码签名的工作原理。如果概念仍然不清楚,您可以查看Apple的代码签名支持页面代码签名指南

好的,让我们开始退出iOS应用程序。为此,我们需要一个IPA文件。

从IPA中提取应用程序捆绑包

我假设您拥有一个.ipa文件,无论您使用的是frida-ios-dump还是任何其他工具,都由您自己决定。但是您应该具有可以使用的IPA文件。如果您想继续学习,我们将使用OWASP iGoat-Swift。您可以直接下载 iGoat-Swift_v1.0.ipa ,也可以克隆项目并提取IPA文件。

我们将ios-deploy用来在应用程序的侧面加载应用程序。当前,如果您尝试按原样旁载IPA文件,则该文件将失败,因为配置文件未将您的设备作为运行应用程序的有效设备包括在内。这就是我们重新签署该应用程序的原因。现在让我们回到提取IPA。

可以解压缩IPA文件,将其视为ZIP文件。文件扩展名没有什么意义,但是为了清楚起见,让我们更改扩展名。

mv ios_resign.ipa ios_resign.zip
unzip -q ios_resign.zip -d ios_resign

获取正确的配置文件

把需要重签名的mobileprovision文件改名为embedded.mobileprovision,保存到并ios_resign目录下,等下重签时替换需要使用;并使用PlistBuddy获取签名文件new_entitlements.plist

cp xxxxxx.mobileprovision  embedded.mobileprovision
security cms -D -i embedded.mobileprovision > new_provision.plist
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' new_provision.plist | tee new_entitlements.plist

删除原来签名

需要把Payload/xxx.app下签名文件_CodeSignature以及embedded.mobileprovision删除,把上一步重命名embedded.mobileprovision放到Payload/xxx.app目录下。

rm -rf Payload/xxx.app/_CodeSignature
rm -rf Payload/xxx.app/embedded.mobileprovision
mv embedded.mobileprovision  Payload/xxx.app/

修改bundleid

/usr/libexec/PlistBuddy -c 'Set :CFBundleIdentifier 'com.xx.xx.xx'' Payload/xxx.ipa/info.plist

重签名

/usr/bin/codesign -fs "iPhone Distribution: xxxxxx" --entitlements new_entitlements.plist Payload/$app_name
/usr/bin/codesign -fs "iPhone Distribution: xxxxxx" --entitlements new_entitlements.plist Payload/xx.app/Frameworks/*

重新生成ipa

zip -qr new.ipa  Payload/

最后

由于很多工程不同,导致xxx.app名称不同,可以写个获取名称的脚本;证书名称也是可以实现脚本获取。

相关文章

  • 【iOS开发】ipa 包修改及重签名

    iOS逆向 ipa包重签名

  • iOS逆向-ipa包重签名及非越狱手机安装多个微信

    iOS逆向-ipa包重签名及非越狱手机安装多个微信 iOS逆向-ipa包重签名及非越狱手机安装多个微信

  • bibibi ipa包重签名

    ios ipa包重签名 作用 保持bundleid不变,重新用企业证书签名,分发。 流程 解压你所要签名的ipa包...

  • 重签名

    iOS逆向 ipa包重签名 检查iOS项目中是否使用了IDFA

  • iOS重签名

    重组 IPA (打包再签名) - 窥打包签名流程 iOS数字签名及ipa重签名 ipa重签名的四种方式 ios 企...

  • iOS 之重签名

    大神文章预读 mac用终端对ipa包重新签名iOS逆向一步一步教你重签名ipa包 步骤 一、安装Homebrew ...

  • iOS重签名ipa包

    背景 我们上包流程是在测试完成后,再出正式包上传,每次都需要重新替换包名、参数等信息,及其麻烦、很容易没有修改完完...

  • iOS ipa包重签名

    为什么要重签名? 1、在没有源代码的情况下,你已经对某个应用进行了资源修改(比如修改了启动图或图标等)。修改完成以...

  • iOS证书及ipa包重签名探究

    iOS证书学习推荐博客代码签名探析,本文重点在于介绍ios8.1.3系统ipa包重签名(如企业证书)无法安装的问题...

  • ipa重签名最直接的教程

    ipa 包重签名最新最简单教程 重签名的意义:ipa 重签名最大的用处是,不必重新打包,和配置其它第三方获取 ap...

网友评论

      本文标题:iOS重签名ipa包

      本文链接:https://www.haomeiwen.com/subject/nxpmcktx.html