1. 程式人生 > >iOS ipa重簽名 、resign

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都是一樣的)

證書ID
其中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檔案,具體格式如下:

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                   ———>bundleID
    iPhone 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檔案。

如有疑問,可聯絡[email protected]或者在下面留言
參考:
點選檢視參考1
點選檢視參考2

相關推薦

iOS ipa簽名 resign

iOS ipa重簽名 (個人版、企業版APP均可) 下面是個人之前使用過的方式,介紹比較詳細 注意: 在開始重籤之前你先要有一個企業證書或者個人開發者證書(個人或者公司均可)(蘋果開發證書) 重簽名:可以讓用個人開發者賬號打出來的包,不用上架A

iOS 企業級 IPA 簽名

-s 企業證書 工具 sig 圖片 inf image git 重新安裝 最近公司客戶要求, 他們希望自己打包 IPA, 他們不提供p12和描述文件給我們, 於是我們只能用自己的證書打包好後, 做相應的處理, 然後在將 IPA 包給客戶, 讓他們用自己的證書重簽名,下面是企

iOS非越獄逆向——ipa簽名

在iOS逆向開發時需要把下載的ipa檔案安裝到iOS裝置上,才能進行動態分析,才能更好的玩別人的App。但是有經驗的同學是知道的,下載的ipa(AppStore 和自己釋出的除外) 檔案是不能直接安裝到自己的iPhone (未越獄)上的。為什麼?因為蘋果爸爸作了

iOS逆向必備絕技之ipa簽名

2018開篇,這回要講的是iOS重簽名,網上重簽名的工具太多了,我試用了一下,都還挺好使。但是,你不知道,我是個喜歡裝逼的人嗎?用工具怎麼夠酷呢?對,裝逼得用終端。接下來的操作都是在終端中進行,開始你的裝逼之旅吧! 一、重簽名準備工作: 找到開發者

ipa簽名

using dem vision tin PE 文檔 ted paths 刪除 為什麽要研究重簽名問題?將程序打包成ipa包後,ipa包中會包含Provisioni

ipa簽名的四種方式

一 開發者除錯安裝app到手機的簽名過程  1. Mac電腦生成公鑰M和私鑰M 2. 公鑰M傳給蘋果伺服器,蘋果伺服器的私鑰A對公鑰M進行加密生成證書返回給xcode 3. Xcode下載profile等描述檔案,用公鑰M對app進行加密生成app簽名,然後把app

iReSign對ipa簽名

有些情況下,我們需要對.ipa檔案進行重新簽名,下面做簡單介紹。 2.開啟IReSign.app 根據下圖指示填寫必要內容 這裡需要注意,描述檔案需要自己提前下載好,而且保證描述問卷調查 app ID與填寫的 app ID相同 3.簽名後,桌面會出現一個新的.ipa檔案

ios 逆向簽名

現在我們開始來進行重簽名。 第一步:先將ipa包進行解壓。 選中ipa包,右鍵 -> 開啟方式 -> 解壓,如下圖所示: 第二步:替換 embedded.mobileprovision檔案。 我們需要將自己打包中的embedded.mobileprov

IOS 打包安裝簽名 .app & .ipa

打包與簽名方法 Xcode 工具可以直接打包,不累贅; xcrun 命令打包: 1,清理: /usr/bin/xcodebuild -target targetName clean 2,編譯: /usr/bin/xcodebuild -target

iOS證書及ipa簽名探究

        iOS證書學習推薦部落格程式碼簽名探析,本文重點在於介紹ios8.1.3系統ipa包重簽名(如企業證書)無法安裝的問題。蘋果在iOS8.1.3系統以後加強了對ipa安裝包簽名的驗證,主要區別在於ipa唯一標識在原有Bundle Identifier的基

iOS ipa包進行重新簽名

home all url info http 技術分享 resign 重新 image 1.安裝brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ma

逆向-002-iOS簽名

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC" } 在Windows環境下會有,靜默安裝。通過iOS應用重簽名(安裝app到手機上),蘋果簽名機制,防止未授權的應用進行安裝 ①獲取應用ipa ②Codesign重簽名 ③

APK反編譯編譯簽名檢視原始碼

1.反編譯與重編譯 工具:apktool 下載地址:https://ibotpeaches.github.io/Apktool/ 環境:Java 7 (JRE 1.7) 安裝步驟:參考官網(也可以不安裝,直接使用java -jar apktool.jar 命令) ,具體如下圖所示反編譯命令:ja

APK反編譯打包簽名之apktool實現

1.下載apktool https://download.csdn.net/download/qq_25844803/10842372 (點一下,爽一年,我是渣渣輝) 2.準備環境 將解壓出來的apktool.bat和apktool.jar放到同一個資料夾下(如:C:\apkto

iOS 簽名工具+時間控制器

2018年11月11日 10:44:49 qq_39860936 閱讀數:10 標籤: iOS ios

iOS逆向----手動簽名(簽名工具的原理)

首先搞一個脫殼的IPA包,可以從PP助手等應用中下載現成的,也可以自己砸一個。。關於砸殼可以看這篇文章,我們把這個IPA命名為test.ipa,把APP命名為test.app(命名只是為了以下方便閱

Mac通過iResign簽名ipa未越獄安裝越獄程式軟體

注意:因為iresign只能在Mac上使用,所以前提必須有一臺 Mac 或者 安裝了OS X的虛擬機器。windows安裝OS X虛擬機器的教程網上很多,這裡不做贅述。 首先還要贅述一下,越獄當然一了百了,但是首先不是剛裝了系統的手機越獄很容易失敗,再到了IOS9的時候不

iOS HOOK 注入與簽名

起因是在蝦神的公眾號上看到一篇文章 《Pokemon Go 鎖區破解》,正好周圍幾個小夥伴正在玩這遊戲,便仔細研究了下所謂的破解鎖區。這次鎖區其實是 GPS 鎖區,遊戲開發商為了縮小初始運營範圍,在中國範圍內都無法正常遊戲,也就是服務端通過客戶端傳送的定位位置資

ipa使用企業賬號簽名並支援推送

Apple對APP的嚴格管理,導致我們TM案子iOS app們如果在app store上上線面臨很大的技術問題。和CP的協調以及商務上的折衷後,打算用企業簽名的方案,為嵌入我們sdk的app們建立一個專門的下載渠道。    假設要重新簽名的應用為iCPApp.ipa,

Android APK反編譯打包簽名

準備工作 Apk反編譯 個人覺得這兩個檔案直接放到 C:\Windows 下比較方便,開啟dos命令可以直接使用 反編譯命令列 apktool d -f 需要反編譯的apk -o 反編譯生成的目錄 例如:apktool d -f