Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Apk去掉簽名以及重新簽名的方法

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

編輯:關於Android編程

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 <類>    加密服務提供方的名稱
 [-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。

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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved