重新打包apk,使用java bin目錄裡的jarsigner進行簽名

來源:互聯網
上載者:User

標籤:

重新打包apk,使用java bin目錄裡的jarsigner進行簽名

反編譯android apk包使用apktool工具,http://download.csdn.net/detail/fancylovejava/8447801

命令:

cmd>cd /d E:\apktool

apktool d xxxx.apk執行後會在當前apktool目錄下產生一個xxxx名的檔案,此檔案就是apk包反編譯後的檔案

然後如果想在asset目錄下添加個檔案,可以放在檔案下,不過代碼需要修改預先寫入讀取asset的邏輯

然後使用命令apktool b xxxx<這個是目錄> 然後會在xxxx目錄裡多出個dist檔案,裡麵包含個重新打包好的apk,但是這個apk沒有使用keystore簽名,所以需要使用java的jarsigner進行簽名

命令如下

C:\Program Files\Java\jdk1.8.025\bin>jarsigner -verbose -keystore keybaohuai -digestalg SHA1 -sigalg MD5withRSA -signedjar AndroidTestsigned.apk zhaocaixiong_101.apk baohuai

會出現一行警告

警告:未提供 -tsa 或 -tsacert, 此 jar 沒有時間戳記。如果沒有時間戳記, 則在簽名者認證的到期日 (2113-10-30) 或以後的任何撤銷日期之後, 使用者可能無法驗證此 jar。

注意

jarsigner 簽名命令裡加入如下參數來解決:-digestalg SHA1 -sigalg MD5withRSA

可以忽略,安裝後測試是否可行!

利用標準的java工具keytool.exe(位於jdk\jre\bin目錄下)建立key,利用jarsigner.exe工具使用產生認證和給程式簽名(位於jdk\bin目錄下)。

win+R運行cmd,進入目錄D:\temp(注:使用該目錄為樣本工作目錄)

a)、建立可以,運行如下命令

keytool -genkey -alias demo.keystore -keyalg RSA -validity 20000 -keystore demo.keystore

/*說明:keytool工具是Java JDK內建的認證工具

-genkey參數表示:要產生一個認證(著作權、身份識別的安全性憑證)

-alias參數表示:認證有別名,-alias demo.keystore表示認證別名為:demo

-keyalg RSA表示加密類型,RSA表示需要加密,以防止別人盜取

-validity 20000表示有效時間20000天

-keystore demo.keystore表示要產生的認證名稱為demo

b)、刪除之前的簽名檔案

用解壓縮工具解開啟apk檔案(如:更改a.apk為a.zip,便可用壓縮公用程式開啟,並找到下面的目錄META-INF下的CERT.RSA和CERT.SF檔案,並刪除該檔案。刪除後,再次更改尾碼名為.apk;)

註:

META-INF目錄:存放簽名後的CERT和MANIFEST檔案,用於識別軟體的簽名及著作權。

res目錄:存放各種Android原始資源,包括:動畫anim、圖片drawable、布局layout、menu菜單、xml等等

AndroidManifest.xml編碼後的Android項目描述檔案,包括了Android項目的名稱、版本、許可權、程式組件描述等等

classes.dex編譯後Class被dx程式轉換成Dalvik虛擬機器的可執行位元組碼檔案

resources.arsc所有文本資源的編譯產物,裡麵包含了各Location對應的字串資源。

c)、使用產生的key對apk簽名,運行如下命令:

jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demoAlias

/*說明:jarsigner是java的簽名工具

-verbose參數表示:顯示出簽名詳細資料

-keystore表示:使用目前的目錄中的demo.keystore簽署憑證檔案。

-signedjar demo_signed.apk demo.apk demo正式簽名,三個參數中依次為簽名後產生的檔案

demo_signed,要簽名的檔案demo.apk和秘鑰庫demo.keystore.*/

(注:查看某個apk是否經過了簽名方法,jarsigner -verify demo.apk。最佳化:簽名後需要做對齊最佳化處理zipalign -v 4 yourprojectname-unaligned.apk yourprojectname.apk)

重新打包apk,使用java bin目錄裡的jarsigner進行簽名

聯繫我們

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