Android Apk去掉簽名以及重新簽名的方法_Android

來源:互聯網
上載者:User

Android Apk去掉簽名以及重新簽名的方法

Android開發中很重要的一部就是用自己的密鑰給Apk檔案簽名,不經過簽名的Apk檔案一般是無法安裝的,就算裝了最後也是失敗。

網上流傳的“勾選允許安裝未知來源的應用”其實跟簽不簽名沒啥關係,說白了就是允許安裝不從電子市場上下載的應用而已。

近幾日需要修改一個Apk中JNI調用的.so檔案,苦於沒有apk原始碼,只好研究了一下籤名相關的問題。當然有很多第三方工具可以做到,但其實JDK中已經提供了強大的簽名工具jarsigner。

1.去除簽名

其實很簡單,用WinRAR開啟apk,找到META-INF檔案夾,刪除MANIFEST.MF之外的所有其他檔案即可。

2.簽名

運行jarsigner,如果沒有設定PATH環境變數,那可以從JDK安裝路徑下的bin目錄中找到,比如我原生就是C:\Program Files\Java\jdk1.8.0_31\bin\jarsigner.exe

jarsigner用法如下:

用法: jarsigner [選項] jar-file 別名    jarsigner -verify [選項] jar-file [別名...][-keystore <url>]      密鑰庫位置[-storepass <口令>]     用於密鑰庫完整性的口令[-storetype <類型>]     密鑰庫類型[-keypass <口令>]      私人密鑰的口令 (如果不同)[-certchain <檔案>]     替代憑證鏈結檔案的名稱[-sigfile <檔案>]      .SF/.DSA 檔案的名稱[-signedjar <檔案>]     已簽名的 JAR 檔案的名稱[-digestalg <演算法>]    摘要演算法的名稱[-sigalg <演算法>]      簽名演算法的名稱[-verify]          驗證已簽名的 JAR 檔案[-verbose[:suboptions]]   簽名/驗證時輸出詳細資料。              子選項可以是 all, grouped 或 summary[-certs]          輸出詳細資料和驗證時顯示認證[-tsa <url>]        時間戳記授權的位置[-tsacert <別名>]      時間戳記授權的公用密鑰認證[-tsapolicyid <oid>]    時間戳記授權的 TSAPolicyID[-altsigner <類>]      替代的簽名機制的類名[-altsignerpath <路徑列表>] 替代的簽名機制的位置[-internalsf]        在簽名塊內包含 .SF 檔案[-sectionsonly]       不計算整個清單的散列[-protected]        密鑰庫具有受保護驗證路徑[-providerName <名稱>]   提供方名稱[-providerClass <類>    Data Encryption Service提供方的名稱 [-providerArg <參數>]]... 主類檔案和構造器參數[-strict]          將警告視為錯誤

比較常用的參數就是指定keystore的位置和簽名後的檔案,舉例如下:

jarsigner -keystore C:\myKey.key -signedjar apk-signed.apk apk-unsigned.apk myKey

待簽名的檔案是apk-unsigned.apk,簽名後的apk是apk-signed.apk。我們也可以不指定-signedjar參數,則在待簽名的apk上直接簽名。最後一個myKey是我的keystore的別名。

簽名完成後再用WinRAR開啟,會發現META-INF目錄下多了MYKEY.RSA和MYKEY.SF兩個檔案,他們分別是:

MANIFEST.MF中儲存了所有其他檔案的SHA-1並base64編碼後的值。
MYKEY.SF中也有其他檔案的SHA-1並base64編碼的值,而且還多一個MANIFEST.MF檔案的SHA-1並base64編碼後的值
MYKEY.RSA包含了公開金鑰資訊和發布機構資訊

後兩個檔案的名稱和我的key別名轉換為大寫後一致。

關於如何產生原生keystore就不再贅述了,在AndroidStudio和Eclipse中都有相應的工具,圖形介面,so easy。

感謝閱讀,希望能協助到大家,謝謝大家對本站的支援!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.