1. 程式人生 > >apk打包和反編譯六、apk的重簽名

apk打包和反編譯六、apk的重簽名

1.      生成包簽名證書

1).     doc中切換到jdkbin目錄

cd C:\Program Files\Java\jdk1.6.0_18\bin

2).     執行下面的命令

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

/*解釋:keytool工具是Java JDK自帶的證書工具

-genkey引數表示:要生成一個證書(版權、身份識別的安全證書)

-alias引數表示:證書有別名,-alias mine.keystore

表示證書別名為:mine

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

-validity 20000表示有效時間20000( K3

-keystore mine123.keystore表示要生成的證書名稱為mine123

*/

輸入完回車後螢幕顯示:: a4 x: O. i5 I

輸入keystore密碼:[密碼不回顯](一般建議使用20位,最好記下來後面還要用)

再次輸入新密碼:[密碼不回顯]( o' ^$ _( F( K& I0

您的名字與姓氏是什麼?

[Unknown]lili# E# C/ Z! O) I; K6 r7 M-

您的組織單位名稱是什麼?

[Unknown]snoopy' |3 v& I! _/ l

您的組織名稱是什麼?

[Unknown]snoopy team

您所在的城市或區域名稱是什麼?) L# V' |. E0 f; {

[Unknown]beijing

您所在的州或省份名稱是什麼?

[Unknown]beijing

該單位的兩字母國家程式碼是什麼

[Unknown]CN- m. ~1 W. i0

CN=lili, U=snoopy, O=snoopy team, L=beijing, ST=beijing, C=CN正確嗎?

[]Y

輸入< mine.keystore>

的主密碼

(如果和keystore密碼相同,按回車):

檢視C:\Program Files\Java\jdk1.6.0_18\bin,生成了以後簽名用的證書Keymine123.keystore

2.      刪除之前的簽名檔案

1).     用解壓工具解壓縮apk檔案(如:解壓到D:\Sign\PhoneBook

壓縮包內容解析:

(1)     META-INF目錄:存放簽名後的CERTMANIFEST檔案,用於識別軟體的簽名及版權。

(2)     res目錄:存放各種Android原始資源,包括:動畫anim、圖片drawable、佈局layoutmenu選單、xml等等

(3)     AndroidManifest.xml編碼後的Android專案描述檔案,包括了Android專案的名稱、版本、許可權、程式元件描述等等

(4)     classes.dex編譯後Classdx程式轉換成Dalvik虛擬機器的可執行位元組碼檔案

(5)     qresources.arsc所有文字資源的編譯產物,裡面包含了各Location對應的字串資源。

2).     找到下面的目錄META-INF,刪除目錄META-INF

3).     PhoneBook整個資料夾用zip工具,重新打包成zip壓縮包,然後更改字尾為apk (注意:產生的PhoneBook.zip中沒有二級根目錄)

3.      重新簽名APK檔案

1).     將證書複製到與需要重新簽名的apk檔案相同的目錄下(如:複製到D:\Sign

2).     doc中切換到需要重新前面的apk檔案的目錄下

cd D:\Sign

3).     執行下面的命令

jarsigner -verbose -keystore android123.keystore -signedjar PhoneBook_signed.apk PhoneBook.apk android123.keystore

/*解釋:* ^, {& k1 Z. M* P/ M+ K5 n5 hjarsignerJava的簽名工具# K8 ~% s# Y. @6 P

-verbose引數表示:顯示出簽名詳細資訊

-keystore表示使用當前目錄中的mine123.keystore簽名證書檔案。

-signedjarPhoneBook_signed.apk表示簽名後生成的APK名稱,% v! a7 e2 v4 W# ]; GPhoneBook.apk表示未簽名的APK Android軟體,mine.keystore表示別名

*/

檢視D:\Sign目錄,已生成重新簽名後的PhoneBook_signed.apk檔案

如果懶得自己敲的話,可以在網上下載重簽名的tool,

例如DoAPK。