工具:apktool和jdk(個人使用jdk1.8.0_77)
下載地址:
apktool_2.2.2.jar
apktool.bat
Apktool官網
說明:apktool_2.2.2.jar需要JDK7+;
首先是配置apktool環境變量或者進入到apktool所在目錄進行操作,記得將apktool_2.2.2.jar改名爲apktool.jar
apktool命令:
1,apktool if framework-res.apk 加載框架
路徑:C:\Users\Administrator\apktool\framework\1.apk
2,反編譯命令:
一般:apktool d -f <file.apk> <dir>
2.2.2反編譯命令: apktool d -f <file.apk> -o <dir>
<file.apk>代表了要反編譯的apk文件的路徑,最好寫絕對路徑,比如C:\xxx.apk
<dir>代表了反編譯後的文件的存儲位置,比如C:\xxx
如果你給定的<dir>已經存在, -f 表示強行覆蓋已經存在的文件夾
提示信息:Destination directory (e:\\custom_bailaohui_163) already exists. Use -f switch i
f you want to overwrite it.
完整命令:H:\apktool>apktool d -f E:\custom_bailaohui_163.apk -o e:custom_bailaohui_163
----------------------------------------------
apktool d 相關選項詳解
usage: apktool d[ecode] [options] <file_apk>
-f,--force Force delete destination directory.
-o,--output <dir> The name of folder that gets written. Default is apk.out
-p,--frame-path <dir> Uses framework files located in <dir>.
-r,--no-res Do not decode resources.
-s,--no-src Do not decode sources.
-t,--frame-tag <tag> Uses framework files tagged by <tag>.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
反編譯後的目錄結構:
3,回編譯命令,得到的apk是未簽名的apk
回編譯命令:
apktool b <dir> apk文件默認在dir/dist目錄下
apktool b <dir> -o <file.apk> 自己指定apk位置
比如:
H:\apktool>apktool b e:\custom_bailaohui_163
H:\apktool>apktool b e:\custom_bailaohui_163 -o e:\test\163.apk
apktool b 相關選項詳解
usage: apktool b[uild] [options] <app_path>
-f,--force-all Skip changes detection and build all files.
-o,--output <dir> The name of apk that gets written. Default is dist/name
.apk
-p,--frame-path <dir> Uses framework files located in <dir>.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
回編譯目錄結構:
簽名:通過java的jarsigner命令
H:\apktool>jarsigner -verbose -keystore d:xxx.keystore -storepass xxx -digestalg SHA1 -sigalg MD5withRSA -signedjar e:666_sign.apk e:666.apk alias_name
-verbose 輸出簽名時的詳細信息
-keystore 密鑰庫位置
-storepass 簽名文件密碼
-digestalg 摘要算法的名稱
-sigalg 簽名算法的名稱
-signedjar 簽名後的apk路徑
e:666.apk 要進行簽名的apk路徑
alias_name 簽名文件的別名
-digestalg -sigalg
這兩個命令在jdk1.6和jdk1.8可以不用帶,
jdk1.7必須加上否則安裝apk時安裝失敗
原因:JDK1.7默認簽名算法改變,需要指定簽名算法和密鑰算法。
H:\apktool>jarsigner -help
用法: 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] 將警告視爲錯誤
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
4,使用zipalign優化apk
命令:zipalign -v 4 E:\666_sign.apk e:\666_zipalign.apk
Usage: zipalign [-f] [-v] [-z] <align> infile.zip outfile.zip
zipalign -c [-v] <align> infile.zip
<align>: alignment in bytes, e.g. '4' provides 32-bit alignment
-c: check alignment only (does not modify file)
-f: overwrite existing outfile.zip
-v: verbose output
-z: recompress using Zopfli
-c 檢查是否已經執行過Align優化
-f 覆蓋優化的apk
-v 詳細信息輸出
-z 使用Zopfli算法進行再壓縮
————————————————
版權聲明:本文爲CSDN博主「huycheaven」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/huyuchaoheaven/article/details/72401427