
Apktool 反編譯 APK從改一行字符串到重新打包【免費下載鏈接】ApktoolA tool for reverse engineering Android apk files項目地址: https://gitcode.com/GitHub_Trending/ap/Apktool想改一個 APK 里的字符串資源但 zip 解出來的AndroidManifest.xml和resources.arsc全是二進制smali 字節(jié)碼更讀不下去。Apktool 就是為這個場景做的把二進制 Android 包解碼成可讀、可編輯、可重新打包的項目。它解決什么問題Apktool 的輸入是一個閉源、二進制的 APK 文件輸出是一個帶完整目錄結(jié)構(gòu)的項目可編輯的AndroidManifest.xml、解碼后的res/資源目錄以及由 baksmali 生成的smali/代碼目錄。它替代的是手工解析resources.arsc和逐個反匯編 dex 的重復(fù)勞動核心工作流就兩個子命令apktool d解碼、apktool b重打包見 brut.apktool.apktool-cli.Main。核心能力拆解只改資源不動邏輯本地化翻譯、換圖標、調(diào)布局這類需求只需要碰資源層。apktool d app.apk會把res/下的 XML 和圖片還原成接近原始的形態(tài)改完文本或圖片后直接apktool b app重新生成 APK。注意它默認也會解碼 smali如果只想看資源可以加-s跳過源碼解碼、-r跳過資源解碼按需裁剪輸出。閱讀與修改 smali 代碼當改動必須落到代碼層比如給AndroidManifest.xml的debuggable打補丁、改 dex 里的常量解碼后的smali/目錄是可讀的匯編文本可以直接編輯再用apktool b編回 dex。解碼邏輯在 brut.androlib.ApkDecoder它對classes.dex、classes2.dex等按順序拆分輸出到smali/、smali_classes2/。限制是 smali 是逐行匯編改動范圍一大就很難維護適合定點修補而不適合大段重寫。處理框架依賴與動態(tài)特性模塊一些 APK尤其是 Play 動態(tài)特性模塊依賴宿主應(yīng)用的框架資源直接解碼會報FrameworkNotFoundException。這類情況先用apktool if framework.apk安裝框架再配合-f框架參數(shù)解碼和構(gòu)建-l package:file參數(shù)則用來聲明共享庫依賴。這是多模塊應(yīng)用和 OEM 定制 ROM 場景下的常規(guī)步驟普通單體 APK 用不到。最短上手路徑以下以源碼構(gòu)建為例也可直接使用官方發(fā)布的預(yù)編譯 jar步驟 2、3 換成java -jar apktool.jar ...git clone https://gitcode.com/GitHub_Trending/ap/Apktool進入目錄。準備 JDK 17 環(huán)境構(gòu)建要求產(chǎn)物是 Java 8 字節(jié)碼運行預(yù)編譯 jar 用 JDK 8 即可。./gradlew build shadowJar構(gòu)建完成后可在brut.apktool/apktool-cli/build/libs/下找到 fat jar。java -jar apktool-*.jar v能打印版本號即工具鏈正常。java -jar apktool-*.jar d app.apk看到Using Apktool ... on app.apk且生成app/目錄即解碼成功改完后java -jar apktool-*.jar b app產(chǎn)物默認輸出到dist/app.apk。邊界與常見坑它不處理加固殼。帶殼 APK 的邏輯藏在 native 殼里解碼出來的 smali 只是殼的加載代碼改了也起不到作用重打包出來的包基本不能跑。構(gòu)建產(chǎn)出的 APK 沒有簽名也不能直接安裝到設(shè)備。需要先用zipalign對齊再用apksigner簽名這一步 Apktool 本身不做。不支持 32 位平臺且對 zip 結(jié)構(gòu)的校驗做了寬松處理以兼容部分應(yīng)用的反制手段遇到解碼報錯Invalid resource config detected之類的提示可以用--keep-broken-res保留問題資源再手工修而不是直接放棄。相關(guān)資源README.md項目定位、分支說明main為 3.x 分支2.x為維護分支與安全漏洞報告方式INTERNAL.md版本發(fā)布流程與構(gòu)建 aapt2 二進制的內(nèi)部文檔CONTRIBUTORS.md貢獻者列表命令行選項全集見apktool help即h子命令構(gòu)建腳本入口在 scripts/ 目錄下按平臺分發(fā)的啟動腳本社區(qū)交流入口為 libera.chat 上的#apktool頻道與它互補的工具是 jadx看 Java 級反編譯代碼和 apksigner/zipalign簽名與對齊Apktool 適用于對自己擁有合法處置權(quán)的包進行操作例如本地化自有應(yīng)用、調(diào)試或兼容性問題排查。修改他人閉源應(yīng)用并重新分發(fā)涉及法律與授權(quán)風險使用前請確認操作對象在你有權(quán)處理的范圍內(nèi)。【免費下載鏈接】ApktoolA tool for reverse engineering Android apk files項目地址: https://gitcode.com/GitHub_Trending/ap/Apktool創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考