古詩詞大全網 - 藝術簽名 - apk打包流程

apk打包流程

aapt給每壹個非assets目錄的資源定義壹個資源ID,它是壹個4字節(byte = 32bit)的數字,格式是PPTTNNNN,PP代表資源所屬的包(package),TT代表資源的類型(Type),NNNN代表這個類型下面的資源名稱(Entry ID)。

對簽名後的apk進行解壓縮,在META-INF目錄下壹般會有三個文件: MANIFEST.MF、CERT.SF和CERT.RSA 三個文件,這裏用不同的證書和簽名方式得到的名字可能不同。

APK包在安裝的時候,是按照RSA->SF->MF的順序依次校驗的:**先用公鑰信息還原簽名信息,然後和.SF文件中的信息進行比對,然後用同樣的摘要算法對.MF文件裏的每壹個條目計算對應的摘要信息,然後比對.MF是否壹致。

缺點

簡單來說,v2簽名模式在原先apk塊中添加了壹個新的塊(簽名塊),新的塊存儲了簽名、摘要、簽名算法、證書鏈和壹些額外的屬性等。這個塊有特定的格式。

apk的格式簽名後變成了下面4個部分

其中第三部分有壹個偏移值直接指向了第二部分的開始位置,而每個第二部分如Central directory header1 .... Central directory header n 的有壹個便宜字段指向了其中對應的第壹部分。

簽名塊包括對apk第壹部分、第二部分和第三部分的二進制內容做加密保護,摘要算法以及簽名算法。簽名塊本身不做加密,這裏需要特殊註意的是由於第三部分包含了對第二部分的引用偏移,因此如果簽名塊做了改變,比如在簽名過程中增加了壹種簽名算法,或者增加簽名者等信息就會導致這個偏移發生改變,因此在算摘要信息的時候需要剔除這個音粗要以第三部分對簽名塊的偏移來做計算。

接下來我們看看具體的apk簽名塊格式,改格式分為4個部分:

怎樣找到v2分塊的位置:ZIP中央結尾記錄->中央目錄其實偏移量->固定magic值,然後就可以定位v2分塊的位置。

v2簽名塊負責保護第1、3、4部分的完整性,以及第二部分包含的APK簽名方案 v2分塊中的 signed data 分塊的完整性。第1、3、4部分的完整性是通過內容摘要來保護的,這些摘要保存在 signed data 分塊中,而 signed data 分塊的完整性是通過簽名保證的。下面開計算摘要的過程

第1、3和4部分的摘要要采用以下的計算方法

從上面我們可以知道v2模式塊有點類似於