iOS ipa重签名 、resign
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)到Payload
中xxx.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 Prefix )
4. 验证签名是否成功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相关推荐
- iOS逆向(1)——利用ipa重签名,3分钟iPhone安装多个微信
本文要达成如图效果,在一台iPhone上安装第二个微信: 准备: Xcode 微信ipa(可通过iTool进行下载) 重签名脚本 步骤 打开Xcode,新建Single View App项目,名字可以 ...
- IOS苹果ipa重签名工具(苹果签名工具,ios签名工具,支持Windows系统和Macos系统)
此款ios苹果ipa重签名工具支持windows系统和Macos系统,是一款完全免费的IPA签名工具,签名时需要用到p12证书文件和provision描述文件,可以使用ios企业证书.个人证书对IPA ...
- java ipa签名,iOS APP重签名ipa流程、步骤及工具介绍
iOS APP重签名就是对已经导出的ipa文件,利用iOS新证书重新对ipa加密构建的过程! 达到让原本不能安装到苹果手机的ipa文件,变成可以安装的ipa包! 重签名ipa需要用到签名工具! 这里推 ...
- iOS Hacker 重签名实现无需越狱注入动态库 dylib
iOS Hacker 重签名实现无需越狱注入动态库 dylib 一.获取 ipa 文件 iOS 的应用都是打包成 ipa 的文件格式,ipa 文件实际上就是 zip 格式的文件,通过 unzip 可以 ...
- iOS逆向重签名(三):微信重签名
目录: 1. iOS逆向重签名(一):签名原理 2. iOS逆向重签名(二):IPA重签名 3. iOS逆向重签名(三):微信重签名 学习了IPA包的重签名技术,下面将这项技术运用到实战中,尝试对微信 ...
- 6月最新兼容15.0系统ipa重签名工具(win+mac)免费
766signer是一款IPA/iOS/苹果重签名工具,支持windows电脑和Mac版苹果电脑. 下载地址: https://wwa.lanzoui.com/b010l6c2d 或者: window ...
- ipa重签名的四种方式
个人分类: iOS逆向篇 文章转载至:https://blog.csdn.net/u012453582/article/details/80318143 一 开发者调试安装app到手机的签名过程 1. ...
- iOS安全之ipa 包重签名的3种方法
重签名的意义:ipa 重签名最大的用处是,不必重新打包,和配置其它第三方获取 appkey 等操作,直接重签名之后依然可以拥有这些功能,更快的发布测试或者灰度版本. 方法一.终端命令:sigh res ...
- ipa签名工具(IPA Resign Tool)在windows和macos系统下对苹果ipa文件一键重签名
什么是苹果签名: 1.首先了解什么是苹果签名,苹果签名是苹果面向所有开发者用户提供的app发布方式,是苹果赋予开发者的一种权限,这对于开发者们来说,可以不用上架不用审核就可以直接安装在ios设备上测试 ...
最新文章
- Android ProgressBar 加载中界面实现(loading 动画) 实现菊花的效果
- Task04——零基础入门NLP - 基于深度学习的文本分类1
- QEMU支持的网络模式
- Windows Workflow Beta2 HOL学习笔记(三):使用IfElse Activity,声明条件和自定义活动...
- C++(四)——类和对象(下)
- JavaWEB_Tomcat安装与配置(J2EE Eclipse)
- springboot整合postgre和hbase实现互相交互功能
- 10-穿墙代理的设置 | 01.数据抓取 | Python
- mmap、munmap函数
- Fiddler (一) 教程(Web调试工具)
- Java类类getClassLoader()方法及示例
- 容器编排技术 -- Kubernetes kubectl create secret docker-registry 命令详解
- 【翻译】Test-After Development is not Test-Driven Development
- 英文课程名称 c语言程序设计,课程名称C语言程序设计I.doc
- 全国自然保护区生态功能区分布数据
- ultravnc 设置代理_紫竹桥代理记账哪家好详情
- 各类排序算法比较分析
- canvas 擦除动画_HTML5 实现橡皮擦的擦除效果
- 13,12_基本运算,add/minus/multiply/divide,矩阵相乘mm,matmul,pow/sqrt/rsqrt,exp/log近似值,统计属性,mean,sum,min,max
- android自定义排班,Android实现一周时间早中晚排班表
热门文章
- Python-opencv进行图片切割与保存
- 关于android中PendingIntent.getBroadcase的注册广播VSAlarmManager .cancle(PendingIntent)如何区分PendingIntent
- oracle插入特殊符号
- 面霸不容易--且面且珍惜
- slq获取某一时间段内的全部数据
- Google Earth Engine(GEE)——自定义图标样式ui.chart(内附详细的图表格式修改方式)
- DirectShow播放器(LAVFilter + EVR)开发例子
- 51单片机学习笔记-6串口通信
- magento eav model study
- 算法(1)—— 冒泡排序