標籤:
apk 反編譯大家都比較熟悉,這裡只做一個筆記。
1 反編譯 apk
apktool d perfect.apk
這樣就把資源檔解壓縮了, classes.dex 也反編譯成了 smali 檔案
2 修改 smali 檔案
得到 smali 檔案,現在就可以對 smali 檔案進行修改和添加自己的代碼了。
當然可以進一步用 dex2jar 處理將 dex 轉成 java class 檔案, 再用 jd-jui 等反編譯成 java 代碼。
現在 apk 基本都做了混淆, 但仔細讀還是基本能夠明白意思的。
修改 smali 是考驗你 smali 彙編的基礎, 這個就是孰能生巧,多讀多練了, 比 arm 彙編要簡單多了。
3 重新打包
apktool b perfect
4 重簽名
重新打包後沒有簽名資訊, 還需要重新簽名,因為 apk 沒有簽名是不能安裝的。
簽名也很簡單用 jarsigner 就行, jarsigner 和 keytool 其實都是 jdk 中的工具, 在 java 安裝目錄下可找到, 本來就是給 jar 檔案簽名的
jarsigner -verbose -keystore leslie.keystore -storepass 123456 -keypass 123456 -signedjar perfect-hack-signed.apk perfect-hack.apk lesliekeystore
也可以用預設的 debug key 簽名, debug.keystore 一般位於 ~/.android 目錄下
jarsigner -verbose -keystore debug.keystore -storepass android -keypass android -signedjar perfect_signed.apk perfect.apk androiddebugkey
如果沒有 keystore 可以用 keytool 產生一個
jarsigner -verbose -keystore leslie.keystore -storepass 123456 -keypass 123456 -signedjar perfect-hack-signed.apk perfect-hack.apk lesliekeystore
這是基礎中的基礎了,看著很簡單,但自己在 smali 中注入了一行彈 toast 的代碼還是用了一天的時間。
android逆向基礎:apk 反編譯 重打包 重簽名