apk反編譯/回編譯

再次記錄一次apk反編譯/回編譯過程,鏈接失效請留言,會及時更新。

參考博客: https://blog.csdn.net/w327918069/article/details/82761437

準備工具

apk反編譯

首先,我們需要一個apk,下圖是Android Studio編寫并打包的一個apk。

1.png

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

1.png

看到了我們熟悉的AndroidManifest.xml文件,我們打開看一看:
1.png

OMG為什么是亂碼呢?是因為Android在打包成apk時,會把部分xml文件編碼為二進制文件,因此我們無法查看。

這就阻擋了我們碼?

此時,祭出我們的神器---->apktool,當當當當~~~~~~~。
一行命令進行apk反編譯:
apktool d -r app-debug.apk 一定要加入?yún)?shù)-r,不然后面回編譯回報錯。

1.png

此時再次打開文件AndroidManifest.xml就可以看到源文件了。

apk反編譯到此結束。

apk回編譯

回編譯就是通過apk反編譯生成的目錄文件轉換成一個apk。
十分簡單的一行命令:
apktool b app-debug

1.png

在反編譯目錄中的dist目錄就可以看到回編譯生成的apk文件。

apk簽名

此時安裝apk到手機無法安裝成功,還需要對apk進行簽名才能安裝。

1.生成key.keystore
keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore

1.png

我的電腦運行上面代碼控制臺亂碼,設置控制臺編碼為GBK即可解決( 參考博客
chcp 936
1.png

可以看到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

1.png

回編譯完成。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容