Android Apk去掉簽名以及重新簽名的方法
Android Apk去掉簽名以及重新簽名的方法
Android開發(fā)中很重要的一部就是用自己的密鑰給Apk文件簽名,不經(jīng)過簽名的Apk文件一般是無法安裝的,就算裝了最后也是失敗。
網(wǎng)上流傳的“勾選允許安裝未知來源的應(yīng)用”其實(shí)跟簽不簽名沒啥關(guān)系,說白了就是允許安裝不從電子市場上下載的應(yīng)用而已。
近幾日需要修改一個Apk中JNI調(diào)用的.so文件,苦于沒有apk源代碼,只好研究了一下簽名相關(guān)的問題。當(dāng)然有很多第三方工具可以做到,但其實(shí)JDK中已經(jīng)提供了強(qiáng)大的簽名工具jarsigner。
1.去除簽名
其實(shí)很簡單,用WinRAR打開apk,找到META-INF文件夾,刪除MANIFEST.MF之外的所有其他文件即可。
2.簽名
運(yùn)行jarsigner,如果沒有設(shè)置PATH環(huán)境變量,那可以從JDK安裝路徑下的bin目錄中找到,比如我本機(jī)的就是C:\Program Files\Java\jdk1.8.0_31\bin\jarsigner.exe
jarsigner用法如下:
用法: jarsigner [選項(xiàng)] jar-file 別名 jarsigner -verify [選項(xiàng)] jar-file [別名...] [-keystore <url>] 密鑰庫位置 [-storepass <口令>] 用于密鑰庫完整性的口令 [-storetype <類型>] 密鑰庫類型 [-keypass <口令>] 私有密鑰的口令 (如果不同) [-certchain <文件>] 替代證書鏈文件的名稱 [-sigfile <文件>] .SF/.DSA 文件的名稱 [-signedjar <文件>] 已簽名的 JAR 文件的名稱 [-digestalg <算法>] 摘要算法的名稱 [-sigalg <算法>] 簽名算法的名稱 [-verify] 驗(yàn)證已簽名的 JAR 文件 [-verbose[:suboptions]] 簽名/驗(yàn)證時輸出詳細(xì)信息。 子選項(xiàng)可以是 all, grouped 或 summary [-certs] 輸出詳細(xì)信息和驗(yàn)證時顯示證書 [-tsa <url>] 時間戳頒發(fā)機(jī)構(gòu)的位置 [-tsacert <別名>] 時間戳頒發(fā)機(jī)構(gòu)的公共密鑰證書 [-tsapolicyid <oid>] 時間戳頒發(fā)機(jī)構(gòu)的 TSAPolicyID [-altsigner <類>] 替代的簽名機(jī)制的類名 [-altsignerpath <路徑列表>] 替代的簽名機(jī)制的位置 [-internalsf] 在簽名塊內(nèi)包含 .SF 文件 [-sectionsonly] 不計(jì)算整個清單的散列 [-protected] 密鑰庫具有受保護(hù)驗(yàn)證路徑 [-providerName <名稱>] 提供方名稱 [-providerClass <類> 加密服務(wù)提供方的名稱 [-providerArg <參數(shù)>]]... 主類文件和構(gòu)造器參數(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ā)布機(jī)構(gòu)信息
后兩個文件的名稱和我的key別名轉(zhuǎn)換為大寫后一致。
關(guān)于如何生成本機(jī)的keystore就不再贅述了,在AndroidStudio和Eclipse中都有相應(yīng)的工具,圖形界面,so easy。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Android簽名機(jī)制介紹:生成keystore、簽名、查看簽名信息等方法
- 給Android的APK程序簽名和重新簽名的方法
- android應(yīng)用簽名詳細(xì)步驟
- Android獲取apk程序簽名信息代碼示例
- Android APK使用Debug簽名重新打包 Eclipse更改默認(rèn)Debug簽名
- iOS 基于AFNetworking下自簽名證書配置的方法
- iOS中的ipa重簽名(逆向必備)
- iOS之Https自簽名證書認(rèn)證及數(shù)據(jù)請求的封裝原理
- IOS 簽名錯誤codesign failed with exit code 1解決方法
- Android和iOS包批量重簽名
相關(guān)文章
安卓(Android)中如何實(shí)現(xiàn)滑動導(dǎo)航
導(dǎo)航是移動應(yīng)用最重要的方面之一,對用戶體驗(yàn)是良好還是糟糕起著至關(guān)重要的作用。好的導(dǎo)航可以讓一款應(yīng)用更加易用并且讓用戶快速上手。相反,糟糕的應(yīng)用導(dǎo)航很容易讓人討厭,并遭到用戶的拋棄。2014-08-08Android自定義View實(shí)現(xiàn)shape圖形繪制
這篇文章主要為大家詳細(xì)介紹了Android使用自定義View實(shí)現(xiàn)shape圖形繪制,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01Android使用AIDL方式實(shí)現(xiàn)播放音樂案例
這篇文章主要介紹了Android使用AIDL方式實(shí)現(xiàn)播放音樂案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04Android開發(fā)VR實(shí)戰(zhàn)之播放360度全景視頻
這篇文章主要為大家詳細(xì)介紹了Android開發(fā)VR實(shí)戰(zhàn)之播放360度全景視頻,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12Android?補(bǔ)間動畫及組合AnimationSet常用方法詳解
這篇文章主要為大家介紹了Android?補(bǔ)間動畫及組合AnimationSet常用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11