ipa重签名

为什么要研究重签名问题?

将程序打包成ipa包后,ipa包中会包括Provisioning Profile和_CodeSignature等文件,里面包括了对整个ipa的签名信息。一旦改动ipa中的任何内容,例如增加一个头文件,签名就会失效,导致ipa无法安装。(貌似改变Info.plist是不影响的)

因此,如果要通过修改ipa包中的内容来得到篡改信息或注入代码的话,就需要解决ipa包的重签名问题。

准备

在重签名之前要做一些准备工作。

1.首先要下载并安装Xcode,里面有个codesign_allocate程序,在安装时/usr/bin中会多一个codesign的程序,该程序用于ipa包的签名。

2.企业证书的Certificate文件,私钥文件,Provisioning Profile文件等。注意企业证书一定要是iOS Distribution的类型,不能是iOS Development。其它详细设置,如In-House等参见http://beyondvincent.com/blog/2014/07/30/provision-ios-ipa-app-for-in-house-enterprise-distribution/

重签名步骤

1.解压ipa

解压ipa得到Payload/[App name].bundle,打开bundle。

2.删除旧的ipa签名信息

删除bundle中的_CodeSignature文件夹,也就是删除之前ipa的签名信息。

3.更换证书

将bundle中旧的Provisioning Profile删除,用我们自己的企业证书的Provisioning Profile替代。

注意,要将ipa包中我们的企业证书改名为embedded.mobileprovision。

4.修改bundle内容

此时我们可以尽情地修改bundle中的内容,例如添加一个动态库,删除一张图片等。

5.重新签名

在完成bundle内容的修改后,需要通过/usr/bin/codesign程序重新签名,命令如下:

/usr/bin/codesign -f -s "iPhone Distribution: YourCompanyName" --resource-rules Payload/ MYAPP.app/ResourceRules.plist Payload/ MYAPP.app

其中iPhone Distribution可以从钥匙串访问中获取,就是企业证书的名字,例如下面的"iPhone Distribution:XXXXXXXXXX":

具体的命令示例:

codesign -f -s "iPhone Developer: XXXXXXXXXX" --resource-rules Payload/NdCP_Game_Demo.app/ResourceRules.plist Payload/NdCP_Game_Demo.app

这条命令的意思是:使用keychain中"iPhone Developer: XXXXXXXXXX"标识的证书,根据Payload/NdCP_Game_Demo.app/ResourceRules.plist文件中的规则进行签名,如果ipa包中已经存在签名,那么将被替换,该过程生成的_CodeSignature目录将存放在Payload/NdCP_Game_Demo.app目录下。

在命令执行后,在bundle中会生成一个新的_CodeSignature目录,里面包含了新的签名信息。

6.重新打包成ipa

在完成上述工作后,可以生成新的ipa进行发布。示例命令如下:

zip -r ResignTest.ipa Payload
# 注意Payload后面不能有“/”

7.发布

经过打包发布测试,得出结论:对修改了ipa包内容和其中的签名后,重签名的ipa文件可以在非越狱设备和越狱设备上成功安装。注意,是通过带有SSL证书的网站和Apple系统安装的(企业内部分发程序),不是通过PP助手那样的第三方工具安装的。

参考资料

http://www.cocoachina.com/bbs/simple/?t181236.html

http://www.169it.com/article/15588355475122308384.html

附录

1.codesign

在帮助文档中:

codesign -- Create and manipulate code signatures

codesign的选项:

-f, --force     When signing, causes codesign to replace any existing signature on the path(s) given. Without this option, existing signatures will not be replaced, and the signing operation fails.

-s, --sign identity     Sign the code at the path(s) given using this identity. See SIGNING IDENTITIES below.

--resource-rules filename   During signing, this option overrides the default rules for identifying and collecting bundle resources and nested code to be sealed into the signature. The argument is the path to a property list (plist) file containing scanning and qualification instructions. See the code signing documentation for details.

其使用方法如下:

Usage: codesign -s identity [-fv*] [-o flags] [-r reqs] [-i ident] path ... # sign
       codesign -v [-v*] [-R testreq] path|[+]pid ... # verify
       codesign -d [options] path ... # display contents
       codesign -h pid ... # display hosting paths

ipa重签名,布布扣,bubuko.com

时间: 2024-10-27 10:15:55

ipa重签名的相关文章

IOS苹果应用IPA重签名软件手机版(苹果重签名,企业签名,安卓苹果平台,时间控制)

软件简介 IOS苹果应用IPA重签名软件手机版,可以在安卓或者苹果手机上,苹果应用IPA文件重新签名,无需MAC苹果电脑和配置XCODE开发环境,便可以直接对IPA文件进行签名,签名在本地进行,不消耗流量,同时支持修改BundleID, 不受描述文件中的BundleID限制,使用简单方便. 本软件为安卓苹果手机版本,如果需要PC版本,请查看PC版打包软件 http://www.krpano.tech/archives/1026 交流群:692727447 最新版软件下载地址: 待发布,加群获取最

ipa 重签名

#!/bin/sh oldipaname="codesigndemo" mobileprovisionname="bundle.mobileprovision" distributionname="iPhone Developer: gan wang (V2C45S8B76)" entitlements="entitlements.plist" #解压ipa oldipa="$oldipaname.ipa"

ios第三方ipa重签名以及xcode附加调试

先dump出ipa,解压出app然后查看是否加密(加壳),如图所示.0表示没有加密.打开包,查看有多少frameworks,因为这些全部要签名的.查看自己的证书信息.security find-identity -v -p codesigning一个个签名.codesign -fs "iPhone Developer:xxxxxxx" libswiftAVFoundation.dylib然后用xcode新创建一个项目生成.打开项目包.拷贝描述文件到要重签名的app下面.然后修改重新签名

ipa 重签

IPA 重签名 时间 2014-03-03 10:28:36  txx's blog原文  http://blog.rpplusplus.me/blog/2014/03/03/ipa-re-codesign/ 注意:这篇文章所记录的技巧仅供大家交流学习使用,不要像快用那样用作盗版分发 在日常生活中,经常会有朋友丢给你自己写的ipa,或者有的app没有上架appStore,只有一个越狱渠道的版本. 这个时候如果我们设备没有越狱的话,可以通过重签名的方法来将这个app部署到我们的开发机上,所谓开发机

iOS -- 最简单的重签名方法

参考自:http://iosre.com/t/topic/2966 1.安装好brew,先用brew安装ruby,然后用gem安装sigh.(见图) 终端运行:brew install ruby 然后运行:sudo gem install sigh 2.上边两步安装的执行一次就可以 然后终端运行  sigh resign ,回车 接下来需要输入的三个路径分别对应的是 ipa文件路径   钥匙串里面证书的名称  .mobileprovision文件 第一个就是ipa文件路径,没什么可说的 拖到终端

非越狱环境下从应用重签名到微信上加载Cycript

从零到一,非越狱环境下iOS应用逆向研究,从dylib注入,应用重签名到App Hook.文中用到的工具和编译好的dylib可在Github上下载. 注意!本文所有操作均在以下环境下成功进行,不同平台或环境可能存在某些问题,欢迎大家在issue中提出问题以及相互讨论. Mac OS X 10.11.6 (15G12a) Xcode 7.3.1 (7D1014) iPhone 5s, iOS 9.3.3 (13G21) 免费开发者账号 示例App:微信 v6.3.19.18 前言 提到非越狱环境下

ipa 重新签名

下载编译iReSign https://github.com/maciekish/iReSign http://82flex.com/p/iresign 企业证书重签名发布APP(支持APNS) 针对内部企业或者内测用户,我们希望APP测试完成后能立即在小范围内测用户手中进行体验以及相关功能的验证以及反馈.为了达到目的,一般我们会自己做一套内部发布系统,既然需要做内测发布,那么首先得有可以用的ipa包.并且保证功能不缺少.苹果的开发者证书只能保证最多100个用户安装,并且还得提供udid,苹果提

iOS逆向之利用Xcode重签名

iOS逆向之利用Xcode重签名 准备工作 非越狱的iPhone手机 用PP助手下载: 微信6.6.5(越狱应用) 步骤 新建工程"Xocde重签名",选择开发证书,在真机上运行 解压微信6.6.5(越狱应用).ipa,在微信-6.6.5(越狱应用)->Payload下,将WeChat.app改名为Xocde重签名.app 在Products->Xcode重签名上右击show in finder 将第2步的Xocde重签名.app拷贝过来,替换. *以下几个步骤可以参考上一

逆向-002-iOS重签名

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC" } 在Windows环境下会有,静默安装.通过iOS应用重签名(安装app到手机上),苹果签名机制,防止未授权的应用进行安装 ①获取应用ipa ②Codesign重签名 ③Xcode自动签名 ④Shell脚本自动重签 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC&qu