Android Apk去掉簽名以及重新簽名的方法
Android Apk去掉簽名以及重新簽名的方法
Android開發(fā)中很重要的一部就是用自己的密鑰給Apk文件簽名,不經(jīng)過簽名的Apk文件一般是無法安裝的,就算裝了最后也是失敗。
網(wǎng)上流傳的“勾選允許安裝未知來源的應用”其實跟簽不簽名沒啥關系,說白了就是允許安裝不從電子市場上下載的應用而已。
近幾日需要修改一個Apk中JNI調用的.so文件,苦于沒有apk源代碼,只好研究了一下簽名相關的問題。當然有很多第三方工具可以做到,但其實JDK中已經(jīng)提供了強大的簽名工具jarsigner。
1.去除簽名
其實很簡單,用WinRAR打開apk,找到META-INF文件夾,刪除MANIFEST.MF之外的所有其他文件即可。
2.簽名
運行jarsigner,如果沒有設置PATH環(huán)境變量,那可以從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>] 時間戳頒發(fā)機構的位置
[-tsacert <別名>] 時間戳頒發(fā)機構的公共密鑰證書
[-tsapolicyid <oid>] 時間戳頒發(fā)機構的 TSAPolicyID
[-altsigner <類>] 替代的簽名機制的類名
[-altsignerpath <路徑列表>] 替代的簽名機制的位置
[-internalsf] 在簽名塊內包含 .SF 文件
[-sectionsonly] 不計算整個清單的散列
[-protected] 密鑰庫具有受保護驗證路徑
[-providerName <名稱>] 提供方名稱
[-providerClass <類> 加密服務提供方的名稱
[-providerArg <參數(shù)>]]... 主類文件和構造器參數(shù)
[-strict] 將警告視為錯誤
比較常用的參數(shù)就是指定keystore的位置和簽名后的文件,舉例如下:
jarsigner -keystore C:\myKey.key -signedjar apk-signed.apk apk-unsigned.apk myKey
待簽名的文件是apk-unsigned.apk,簽名后的apk是apk-signed.apk。我們也可以不指定-signedjar參數(shù),則在待簽名的apk上直接簽名。最后一個myKey是我的keystore的別名。
簽名完成后再用WinRAR打開,會發(fā)現(xiàn)META-INF目錄下多了MYKEY.RSA和MYKEY.SF兩個文件,他們分別是:
MANIFEST.MF中保存了所有其他文件的SHA-1并base64編碼后的值。
MYKEY.SF中也有其他文件的SHA-1并base64編碼的值,而且還多一個MANIFEST.MF文件的SHA-1并base64編碼后的值
MYKEY.RSA包含了公鑰信息和發(fā)布機構信息
后兩個文件的名稱和我的key別名轉換為大寫后一致。
關于如何生成本機的keystore就不再贅述了,在AndroidStudio和Eclipse中都有相應的工具,圖形界面,so easy。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
Android?Banner本地和網(wǎng)絡輪播圖使用介紹
大家好,本篇文章講的是Android?Banner本地和網(wǎng)絡輪播圖使用介紹,感興趣的同學趕快來看一看吧,希望本篇文章對你起到幫助2021-11-11
Android實現(xiàn)評論欄隨Recyclerview滑動左右移動
這篇文章主要介紹了Android實現(xiàn)評論欄隨Recyclerview滑動左右移動效果,仿約會吧應用詳情頁實現(xiàn),感興趣的小伙伴們可以參考一下2016-05-05
android startActivityForResult的使用方法介紹
android startActivityForResult的使用方法介紹,需要的朋友可以參考一下2013-05-05
Android中Intent傳遞對象的兩種方法Serializable,Parcelable
這篇文章主要介紹了Android中的傳遞有兩個方法,一個是Serializable,另一個是Parcelable,對intent傳遞對象的兩種方法感興趣的朋友一起學習吧2016-01-01
Android開發(fā)之Gradle?進階Tasks深入了解
這篇文章主要為大家介紹了Android開發(fā)之Gradle?進階Tasks深入了解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
Android自定義Dialog實現(xiàn)通用圓角對話框
這篇文章主要為大家詳細介紹了Android自定義Dialog實現(xiàn)通用圓角對話框,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11

