ipa重簽名,ipa簽名

來源:互聯網
上載者:User

ipa重簽名,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中的內容,例如添加一個動態庫,刪除一張圖片等。

注意:如果要往bundle中添加動態庫,必須要先將其壓縮成zip檔案,在程式啟動時將其解壓到Documents目錄下再dlopen,否則程式在啟動時載入動態庫檔案會卡死在那裡。


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


注意:CocoaChina論壇中其中一個文章說重簽名後,會影響到keychain的使用,這一步有待驗證,後面會補充說明。


ipa格式簽名有效熊貓看書

我去問問朋友,(*^__^*) 嘻嘻……
 
下載ipa軟體,網頁上有一串代碼,貌似是說給app簽名什的,什意思?

有越獄嗎?如果越獄了的話,可能沒有裝appsnyc外掛程式和ipa外掛程式,在cydia都可以搜到的,這些東西不清楚就去weiphone學學吧,那裡的置頂帖都說得很清楚,我拿到機子第一天就脫離小白了,就是因為在weiphone看了那些文章
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.