再次記錄一次apk反編譯/回編譯過程,鏈接失效請留言,會及時更新。
參考博客: https://blog.csdn.net/w327918069/article/details/82761437
準備工具
- apktool 2.4.0: 請自行github搜索瞎子啊
- AndroidKiller_v1.3.1: [百度網(wǎng)盤](https://www.baidupcs.com/rest/2.0/pcs/file?method=batchdownload&app_id=250528&zipcontent=%7B%22fs_id%22%3A%5B908508934748719%5D%7D&sign=DCb740ccc5511e5e8fedcff06b081203:er%2F72tppfnpi594iaAgvRBDVVMc%3D&uid=3618094371&time=1566556023&dp-logid=5421758269795401179&dp-callid=0&vuk=3618094371&zipname=AndroidKiller__v1.3.1.
apk反編譯
首先,我們需要一個apk,下圖是Android Studio編寫并打包的一個apk。

其實apk就相當于一個zip壓縮包,通過WinRar工具可以對其解壓縮,像這樣:

看到了我們熟悉的
AndroidManifest.xml文件,我們打開看一看:
OMG為什么是亂碼呢?是因為Android在打包成apk時,會把部分xml文件編碼為二進制文件,因此我們無法查看。
這就阻擋了我們碼?
此時,祭出我們的神器---->apktool,當當當當~~~~~~~。
一行命令進行apk反編譯:
apktool d -r app-debug.apk 一定要加入?yún)?shù)-r,不然后面回編譯回報錯。

此時再次打開文件
AndroidManifest.xml就可以看到源文件了。
apk反編譯到此結束。
apk回編譯
回編譯就是通過apk反編譯生成的目錄文件轉換成一個apk。
十分簡單的一行命令:
apktool b app-debug

在反編譯目錄中的
dist目錄就可以看到回編譯生成的apk文件。
apk簽名
此時安裝apk到手機無法安裝成功,還需要對apk進行簽名才能安裝。
1.生成key.keystore
keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore

我的電腦運行上面代碼控制臺亂碼,設置控制臺編碼為GBK即可解決( 參考博客)
chcp 936
可以看到key.keystore已經(jīng)生成。
2.對apk進行簽名
可用于沒有簽名和已經(jīng)簽名的apk,再次簽名。
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]
命令格式及參數(shù)意義:
-verbose -> 輸出簽名過程的詳細信息
-keystore [keystorePath] -> 密鑰的庫的位置
-signedjar [apkOut] -> 簽名后的輸出文件名
[apkin] -> 待簽名的文件名
[alias] -> 證書別名
jarsigner -verbose -keystore key.keystore -signedjar app-debug_signed.apk app-debug.apk key.keystore

回編譯完成。