iOS ipa重签名 (个人版、企业版APP均可)

下面是个人之前使用过的方式,介绍比较详细

注意: 在开始重签之前你先要有一个企业证书或者个人开发者证书(个人或者公司均可)(苹果开发证书)

重签名:可以让用个人开发者账号打出来的包,不用上架Appstore即可将其安装到iOS设备上(前提条件是你得有一个开发者证书)。
风险提示:这种重签名方法仅供个人有兴趣的开发者去玩玩,不提倡用于商用,提倡使用Appstore上传发布到你的应用,重签名只能算是黑科技,苹果所不提倡的东西,如果APP使用量过大的话,企业证书有被封停的风险。当然,如果你使用的是个人开发者账号,则只能在添加了UUID的设备上面安装

苹果在iOS8.1.3系统以后加强了对ipa安装包签名的验证,主要区别在于ipa唯一标识在原有Bundle Identifier的基础上增加了证书ID,也就说安装包和手机上已安装APP的Bundle Identifier即使一致,如果两者签名的证书ID不相同,那么安装包也无法正常安装。

图中方框里字符串就是证书ID(钥匙串中我的证书),升级后的ipa标识就是证书ID+BundleID,只有两者完全匹配,安装包才能覆盖安装,否则就会提示安装失败。解决办法就是卸载安装包,重新安装!
如果这个地方找不到证书ID,可登录到苹果开发者中心https://developer.apple.com,memberCenter,点击certificates,identifier&Profiles,再点击identifier中的App IDs点击某个AppId(因为证书ID是唯一的,所以选哪个APPID都是一样的)


其中Prefix就是证书ID

目前,重签名主要用于企业证书重签名个人证书发布的ipa包,包括各种助手及企业内测包的发布等。在重签名前,让我们先看看一个完整的ipa包有哪些与证书相关的东西!将ipa包后缀名改为zip,解压之后,会发现一个文件夹Payload(如果是个人证书打包还会包含Symbols文件夹),payload文件夹下面的XXX.app文件夹中有_CodeSignature签名文件夹和embedded.mobileprovision证书配置文件以及其他资源文件。重签名只关注这两个文件即可。

_CodeSignature -> ipa包签名文件
embedded.mobileprovision -> 证书配置文件
so,替换上面两个文件就解决了ipa重签名的主要问题。
替换_CodeSignature里面的签名文件需要用到一个文件entitlements.plist的授权文件。所以我们要创建一个entitlements.plist文件,具体格式如下:

xml格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>application-identifier</key><string>xxxxxxxxxx.com.xxx.xxx</string><key>com.apple.developer.team-identifier</key><string>xxxxxxxxxx</string><key>get-task-allow</key><false/><key>keychain-access-groups</key><array><string>xxxxxxxxxx.com.xxx.xxx</string></array></dict>
</plist>

其中xxxxxxxxxx.com.xxx.xxx要换成ipa标识(就是证书ID+BundleID),其中xxxxxxxxxx就是你的证书ID,后面部分是bundleID
注意:get-task-allow一定要填NO(false)(否则安装一定失败),还有bundleID一定要与新的embedded.mobileprovision相对应,不然会导致签名失败。
准备工作都做好了 ,是开始我们重签名的真正的步骤了:
1、解压你所要签名的ipa包(解压后里面包含Payload(如果是个人证书打包还会包含Symbols文件夹))
unzip xxx.ipa
2、删除Payload中xxx.app里面的_CodeSignature文件夹
rm -rf Payload/xxx.app/_CodeSignature
3、拷贝embedded.mobileprovision(新的必须改名为embedded)到Payloadxxx.app里面
cp embedded.mobileprovision Payload/xxx.app
4、创建entitlements.plist,并用该文件进行重签名
codesign -f -s "iPhone Distribution: xxxxxxxxxx" --entitlements entitlements.plist Payload/xxx.app
其中"iPhone Distribution: xxxxxxxxxx"是证书名, 在钥匙串中能找到
5、修改xxx.app下面的info.plist里面的bundleIdentifier为你自己的bundleIdentifier
6、打包
zip -r xxx.ipa Payload(如果之前文件夹包含Symbols文件夹,该文件夹与Payload文件夹一起打包)
7、安装到手机进行验证
xcode、iTunes、各种手机助手、或者一些第三方托管平台(比如蒲公英等)

codesign命令
1. 重签名codesign -f -s "iPhone Distribution: xxxxxxxxxx" --entitlements entitlements.plist Payload/xxx.app
2. 查看当前MAC电脑中的安装的开发者证书:security find-identity -v -p codesigning
3. 查看签名信息codesign -vv -d Payload/xxx.app可以看到如下信息:

identifier                   ———>bundleIDiPhone Distribution :XXX     ———>证书名TeamIdentifier               ———>证书ID(即 App ID Prefix4. 验证签名是否成功codesign —verify Payload/xxx.app

我自己这边看到的结果是这样的,重签名是成功的。

PS: !!!
如果你的APP中使用到了keychains的存取,APP在写入keychains时报错并导致APP奔溃日志:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.
导致crash的原因是keychains的数据仅共享于同公司(企业账号),别的公司(账号)访问不了你公司产品的keychain,所以重签名的bundeID必须与原来的一致。即你重签名所用的entitlements.plist中的bundleID要与原待签名的APP的bundleID一致。
下面两种做法均可以避免改问题
1、直接在Payload/xxx.app/info.plist中修改bundle identifier为与entitlements.plist中配置的bundleID一致
2、如果你不想改变你的bundleID,在你重签名所用到的企业证书需要去配置一个新的AppID,对该AppID配置App ID Suffix(Bundle ID)为待签名的App的bundleID,根据这个appID重新创建发布文件.mobileProversion文件。

如有疑问,可联系m12860gyh@gmail.com或者在下面留言
参考:
点击查看参考1
点击查看参考2

iOS ipa重签名 、resign相关推荐

  1. iOS逆向(1)——利用ipa重签名,3分钟iPhone安装多个微信

    本文要达成如图效果,在一台iPhone上安装第二个微信: 准备: Xcode 微信ipa(可通过iTool进行下载) 重签名脚本 步骤 打开Xcode,新建Single View App项目,名字可以 ...

  2. IOS苹果ipa重签名工具(苹果签名工具,ios签名工具,支持Windows系统和Macos系统)

    此款ios苹果ipa重签名工具支持windows系统和Macos系统,是一款完全免费的IPA签名工具,签名时需要用到p12证书文件和provision描述文件,可以使用ios企业证书.个人证书对IPA ...

  3. java ipa签名,iOS APP重签名ipa流程、步骤及工具介绍

    iOS APP重签名就是对已经导出的ipa文件,利用iOS新证书重新对ipa加密构建的过程! 达到让原本不能安装到苹果手机的ipa文件,变成可以安装的ipa包! 重签名ipa需要用到签名工具! 这里推 ...

  4. iOS Hacker 重签名实现无需越狱注入动态库 dylib

    iOS Hacker 重签名实现无需越狱注入动态库 dylib 一.获取 ipa 文件 iOS 的应用都是打包成 ipa 的文件格式,ipa 文件实际上就是 zip 格式的文件,通过 unzip 可以 ...

  5. iOS逆向重签名(三):微信重签名

    目录: 1. iOS逆向重签名(一):签名原理 2. iOS逆向重签名(二):IPA重签名 3. iOS逆向重签名(三):微信重签名 学习了IPA包的重签名技术,下面将这项技术运用到实战中,尝试对微信 ...

  6. 6月最新兼容15.0系统ipa重签名工具(win+mac)免费

    766signer是一款IPA/iOS/苹果重签名工具,支持windows电脑和Mac版苹果电脑. 下载地址: https://wwa.lanzoui.com/b010l6c2d 或者: window ...

  7. ipa重签名的四种方式

    个人分类: iOS逆向篇 文章转载至:https://blog.csdn.net/u012453582/article/details/80318143 一 开发者调试安装app到手机的签名过程 1. ...

  8. iOS安全之ipa 包重签名的3种方法

    重签名的意义:ipa 重签名最大的用处是,不必重新打包,和配置其它第三方获取 appkey 等操作,直接重签名之后依然可以拥有这些功能,更快的发布测试或者灰度版本. 方法一.终端命令:sigh res ...

  9. ipa签名工具(IPA Resign Tool)在windows和macos系统下对苹果ipa文件一键重签名

    什么是苹果签名: 1.首先了解什么是苹果签名,苹果签名是苹果面向所有开发者用户提供的app发布方式,是苹果赋予开发者的一种权限,这对于开发者们来说,可以不用上架不用审核就可以直接安装在ios设备上测试 ...

最新文章

  1. Android ProgressBar 加载中界面实现(loading 动画) 实现菊花的效果
  2. Task04——零基础入门NLP - 基于深度学习的文本分类1
  3. QEMU支持的网络模式
  4. Windows Workflow Beta2 HOL学习笔记(三):使用IfElse Activity,声明条件和自定义活动...
  5. C++(四)——类和对象(下)
  6. JavaWEB_Tomcat安装与配置(J2EE Eclipse)
  7. springboot整合postgre和hbase实现互相交互功能
  8. 10-穿墙代理的设置 | 01.数据抓取 | Python
  9. mmap、munmap函数
  10. Fiddler (一) 教程(Web调试工具)
  11. Java类类getClassLoader()方法及示例
  12. 容器编排技术 -- Kubernetes kubectl create secret docker-registry 命令详解
  13. 【翻译】Test-After Development is not Test-Driven Development
  14. 英文课程名称 c语言程序设计,课程名称C语言程序设计I.doc
  15. 全国自然保护区生态功能区分布数据
  16. ultravnc 设置代理_紫竹桥代理记账哪家好详情
  17. 各类排序算法比较分析
  18. canvas 擦除动画_HTML5 实现橡皮擦的擦除效果
  19. 13,12_基本运算,add/minus/multiply/divide,矩阵相乘mm,matmul,pow/sqrt/rsqrt,exp/log近似值,统计属性,mean,sum,min,max
  20. android自定义排班,Android实现一周时间早中晚排班表

热门文章

  1. Python-opencv进行图片切割与保存
  2. 关于android中PendingIntent.getBroadcase的注册广播VSAlarmManager .cancle(PendingIntent)如何区分PendingIntent
  3. oracle插入特殊符号
  4. 面霸不容易--且面且珍惜
  5. slq获取某一时间段内的全部数据
  6. Google Earth Engine(GEE)——自定义图标样式ui.chart(内附详细的图表格式修改方式)
  7. DirectShow播放器(LAVFilter + EVR)开发例子
  8. 51单片机学习笔记-6串口通信
  9. magento eav model study
  10. 算法(1)—— 冒泡排序