- 相關(guān)推薦
Android Apk去簽名、重新簽名的方法
Android開(kāi)發(fā)中很重要的一部就是用自己的密鑰給Apk文件簽名,不經(jīng)過(guò)簽名的Apk文件一般是無(wú)法安裝的,就算裝了最后也是失敗。
網(wǎng)上流傳的“勾選允許安裝未知來(lái)源的應用”其實(shí)跟簽不簽名沒(méi)啥關(guān)系,說(shuō)白了就是允許安裝不從電子市場(chǎng)上下載的應用而已。
近幾日需要修改一個(gè)Apk中JNI調用的.so文件,苦于沒(méi)有apk源代碼,只好研究了一下簽名相關(guān)的問(wèn)題。當然有很多第三方工具可以做到,但其實(shí)JDK中已經(jīng)提供了強大的簽名工具jarsigner。
1.去除簽名
其實(shí)很簡(jiǎn)單,用WinRAR打開(kāi)apk,找到META-INF文件夾,刪除MANIFEST.MF之外的所有其他文件即可。
2.簽名
運行jarsigner,如果沒(méi)有設置PATH環(huán)境變量,那可以從JDK安裝路徑下的bin目錄中找到,比如我本機的就是C:Program FilesJavajdk1.8.0_31binjarsigner.exe
jarsigner用法如下:
用法: jarsigner [選項] jar-file 別名 jarsigner -verify [選項] jar-file [別名...][-keystore] 密鑰庫位置[-storepass <口令>] 用于密鑰庫完整性的口令[-storetype <類(lèi)型>] 密鑰庫類(lèi)型[-keypass <口令>] 私有密鑰的口令 (如果不同)[-certchain <文件>] 替代證書(shū)鏈文件的名稱(chēng)[-sigfile <文件>] .SF/.DSA 文件的名稱(chēng)[-signedjar <文件>] 已簽名的 JAR 文件的名稱(chēng)[-digestalg <算法>] 摘要算法的名稱(chēng)[-sigalg <算法>] 簽名算法的名稱(chēng)[-verify] 驗證已簽名的 JAR 文件[-verbose[:suboptions]] 簽名/驗證時(shí)輸出詳細信息。 子選項可以是 all, grouped 或 summary[-certs] 輸出詳細信息和驗證時(shí)顯示證書(shū)[-tsa] 時(shí)間戳頒發(fā)機構的位置[-tsacert <別名>] 時(shí)間戳頒發(fā)機構的公共密鑰證書(shū)[-tsapolicyid] 時(shí)間戳頒發(fā)機構的 TSAPolicyID[-altsigner <類(lèi)>] 替代的簽名機制的類(lèi)名[-altsignerpath <路徑列表>] 替代的簽名機制的位置[-internalsf] 在簽名塊內包含 .SF 文件[-sectionsonly] 不計算整個(gè)清單的散列[-protected] 密鑰庫具有受保護驗證路徑[-providerName <名稱(chēng)>] 提供方名稱(chēng)[-providerClass <類(lèi)> 加密服務(wù)提供方的名稱(chēng) [-providerArg <參數>]]... 主類(lèi)文件和構造器參數[-strict] 將警告視為錯誤
比較常用的參數就是指定keystore的位置和簽名后的文件,舉例如下:
jarsigner -keystore C:myKey.key -signedjar apk-signed.apk apk-unsigned.apk myKey
待簽名的文件是apk-unsigned.apk,簽名后的apk是apk-signed.apk。我們也可以不指定-signedjar參數,則在待簽名的apk上直接簽名。最后一個(gè)myKey是我的keystore的別名。
簽名完成后再用WinRAR打開(kāi),會(huì )發(fā)現META-INF目錄下多了MYKEY.RSA和MYKEY.SF兩個(gè)文件,他們分別是:
MANIFEST.MF中保存了所有其他文件的SHA-1并base64編碼后的值。
MYKEY.SF中也有其他文件的SHA-1并base64編碼的值,而且還多一個(gè)MANIFEST.MF文件的SHA-1并base64編碼后的值
MYKEY.RSA包含了公鑰信息和發(fā)布機構信息
后兩個(gè)文件的名稱(chēng)和我的key別名轉換為大寫(xiě)后一致。
關(guān)于如何生成本機的keystore就不再贅述了,在A(yíng)ndroidStudio和Eclipse中都有相應的工具,圖形界面,so easy。
【Android Apk去簽名、重新簽名的方法】相關(guān)文章:
表示心煩的心情簽名大去傷心句子08-27
戰隊的個(gè)性簽名_簽名08-12
經(jīng)典簽名精選07-04
郁悶的個(gè)性簽名,郁悶的簽名10-22
青春一去不復返個(gè)性簽名最新匯總11-10
英文愛(ài)情個(gè)性簽名,關(guān)于英文的愛(ài)情個(gè)性簽名-個(gè)性簽名04-18
悲情的簽名07-25
經(jīng)典情話(huà)簽名07-05
心煩的簽名08-07