# Apktool操作紀錄 * 本文章會介紹decode(解包)、modify、package(重新包裝)、生成Keystore證書(生成開發者簽名)和sign(生成apk的簽名) * *~前一篇文章介紹了apktool的安裝和設定環境變數,若是想要了解,可以去參考本系列的前一篇文章⩥[apktool下載和設定全紀錄](https://hackmd.io/v8aOo_4HS3Cn96t8iQUHmg?edit)* ### 1.介紹 * apktool這個工具其實是在把別人的<.apk檔>拆開來經過修改後,再次包裝回去。而且經過生成Keystore和sign的動作後,利用儲存簽名的文件告訴電腦這已經是你的.apk檔了。 * 此篇會帶著大家使用apktool把<.apk檔>先解包裝變回數據檔,修改程式碼後,再重新包裝回可以執行的Android執行檔<.apk檔> ### 2.使用工具 1. apktool 用來解包打包.apk 2. VSCode 用來編譯程式碼,若是要使用其他編譯器也可以 3. jadx(本文未使用) 用來反編譯.dex和定位.smail ### 3.decode * 操作者在使用apktool對.apk解包後,會產生一些文件、圖像、程式碼或其他數據檔。 * 打開電腦的Terminal,進入apktool所在資料夾,接著執行解包命令 ``` $ java -jar <apktool_2.6.1.jar的檔名> d <要解壓縮的檔案.apk> ``` ``` $ apktool d <要解壓縮的檔案.apk> //如果有環境變數設定完成就可以只打這樣 ``` *~若是還沒有設定環境變數,可以去參考本系列的前一篇文章⩥[apktool下載和設定全紀錄](https://hackmd.io/v8aOo_4HS3Cn96t8iQUHmg?edit)* * 之後會生成一個資料夾,檔名是你剛剛反編譯的軟體名,內部是所有解包後的資料 ### 4.modify * 使用編譯器去編輯檔案和修改檔案,可以先使用jadx去定位檔案,再用VSCode去編輯檔案內容 *~若是需要操作範例⩥[一次安卓逆向工程记录](https://lifelonglearni.ng/android-reverse-engineering)* *~若是想知道不同檔名的資料夾內部含有甚麼檔案可以去參考這個網站⩥[Android App 逆向入門之一:拆開與重組 apk](https://tech-blog.cymetrics.io/posts/huli/android-apk-decompile-intro-1/)* ### 5.package * 執行程式 ``` java -jar <apktool_2.6.1.jar 你的jar檔> b <要壓縮的檔案位置> //執行程式 ``` ``` $apktool b <要壓縮的檔案名稱> //如果有設定環境變數就可使用這行 ``` * 經過apktool包裝後的檔案無法直接安裝和執行,還需要經過兩道手續生成Keystore和sign ### 6.生成Keystore * Android系統打包app(.apk檔)需要證書(.Keystore檔)來表明開發者身分 * 生成證書是自動且不須付費的 * 只要修改.apk檔內部文件,就需要重新簽名(sign),但簽名需要證書,於是先製造證書是簽名前需要經過的一環。 * 我們在這步驟生成自己的證書後,就等於像電腦宣告程式碼的擁有者已經變成你了。 ``` keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore //生成證書的指令,Windows和Linux都通用 ``` ### 7.sign * 接著生成apk的簽名,在生成簽名時須要先有證書 * 生成簽名的用意是為了讓Android系統辨別程式 *~如果對signer的指令有興趣,可以參考此網站⩥[The jarsigner Command](https://docs.oracle.com/en/java/javase/14/docs/specs/man/jarsigner.html)* --- ### 參考網站 :::spoiler 其他實作紀錄 偏粗略的介紹⩥[APKTOOL 反編譯教學](http://apkmodify.weebly.com/9312-apktool-2145332232356952594523416.html) 偏粗略的介紹⩥[Android反編譯工具:Apktool](https://king39461.pixnet.net/blog/post/281425048-%5Bandroid%5D%E5%8F%8D%E7%B5%84%E8%AD%AF%E5%B7%A5%E5%85%B7apktool%E6%95%99%E5%AD%B8) 指令怪物⩥[apktool的下載,安裝,反編譯和重新打包](https://www.zendei.com/article/103715.html) 偏詳細⩥[APK反編譯、重打包、簽名之apktool實現](https://www.796t.com/content/1544520065.html) 偏詳細⩥[一次安卓逆向工程记录](https://lifelonglearni.ng/android-reverse-engineering) jadx實操⩥[開源項目精選: 手把手教你如何用 JADX 反編譯 APK](https://openingsource.org/258/zh-tw/) Keystore參考文章⩥[Android平台签名证书(.keystore)生成指南](https://ask.dcloud.net.cn/article/35777) ::: :::spoiler 其餘參考文件 sign參考文件⩥[The jarsigner Command](https://docs.oracle.com/en/java/javase/14/docs/specs/man/jarsigner.html) ::: ###### tags: `Android Reverse Engineer`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up