apktool 主要用於逆向apk文件。它可以將資源解碼,並在修改后可以重新構建它們。它還可以執行一些自動化任務,例如構建 apk
下載地址
https://ibotpeaches.github.io/Apktool/
https://bitbucket.org/iBotPeaches/apktool/downloads/
反編譯APK
命令格式:apktool d [ apk文件名 ]
進入到 apktool 所在目錄
.\apktool.jar d .\mlxx.apk
不行的話就用下面這個命令,前面加上 java -jar
java -jar .\apktool.jar d .\mlxx.apk
編譯成功之后會出現一個文件夾
- AndroidManifest.xml
APP權限配置
程序入口
- smali 文件(一種匯編代碼)
.smali可以和.dex相互轉換
修改APK代碼通常修改smali文件(重新修改.java源代碼 重新編譯的困難太大)
-baksmali.jar smali.jar對dex 和 smali文件做轉換
- classes.dex
源代碼在classes.dex文件里
可以反編出.java代碼
重新打包
命令
apktool b 目錄
apktool b mlxx
如果不行
java -jar .\apktool.jar b mlxx
打包成功后目錄內會出現一個 dist 目錄,apk 就在里面
簽名
keytool jarsigner 工具是JAVA JDK自帶的
- 生成證書
keytool -genkey -keystore my-release-key.keystore -alias my_alias -keyalg RSA -keysize 4096 -validity 10000
key | dec |
---|---|
keytool | 工具名稱(固定寫法) |
)-genkey | 執行的是生成數字證書操作(固定寫法) |
-v | 打印生成證書的詳細信息 |
-keystore myApp.keystore | 生成的證書的文件名為"myApp.keystore"(根據需求,設置你的證書名) |
alias myApp.keystore | 證書的別名為"myApp.keystore"。(一般和上面的文件名相同,可以不同,但要記好,簽名時會用(A)) |
-keyalg RSA | 生成密鑰文件采用的算法為RSA(固定寫法) |
-validity 3000 | 該數字證書的有效期為30000天,30000天之后該證書將失效 |
- 用證書給 apk 簽名
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore -signedjar super.mlxx.apk mlxx.apk my_alias
key | dec |
---|---|
jarsigner | 工具稱名(固定寫法) |
-verbose | 顯示出簽名詳細信息 |
-keystore myApp.keystore myApp.keystore | 要使用的簽名證書文件 |
-signedjar android-release-signed.apk | 簽名后的文件名 |
android-release-unsigned.apk | 要簽名的文件 |
myApp.keystore | 別名,即(A)步中的別名 |
未簽名APK不能在安卓手機上安裝
APP在啟動時會對簽名校驗,要逆APP,跳過校驗