Android安卓APK反編譯逆向,android安卓apk
關於安卓APK程式的逆向比WindowsPE檔案的逆向要簡單太多了
1.安卓的APK程式其實就是一個zip,可以用winrar開啟,解壓後會看到很熟悉的目錄,還有AndroidManifest.xml檔案,各種資源和圖片
2.xml用記事本開啟,會看到有亂碼,所以需要使用AXMLPrinter2.jar工具來進行處理一下,命令如下:
java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt
這時開啟AndroidManifest.txt,就會看到和源碼裡差不多了,也沒亂碼了.
3.APK的所有.java代碼是編譯到classes.dex檔案裡的,所以要想知道程式的操作流程和具體功能,必須得反編譯這個檔案,使用baksmali.jar工具
java -jar baksmali.jar -o classout/ classes.dex
執行完成後,產生一個classout目錄,進去找到android目錄,.smali,就對應.java的代碼了,咱們看.small裡的代碼就行了,雖然不是標準的java代碼,但看習慣之後就很簡單了,起碼比Windows的彙編要簡單太多了...
4.最後,咱們通過反編譯之後,可以改代碼改資源,改完之後,還得編譯回去,使用smali.jar工具
java -jar smali.jar classout/ -o classes.dex
這樣弄好之後,再塞進那個apk裡,這樣程式還是可以啟動並執行,呵呵!
5.有時候AXMLPrinter2.jar不一定能處理好xml,會報錯,據說是因為資訊清單檔minSdkVersion大於7,咱們可以用APKTool
APKTool很簡單,就是三個檔案(aapt.exe、apktool.bat、apktool.jar)
apktool d <file.apk> <dir> //反編譯
apktool d –f <file.apk> <dir> //重新編譯
12點多了,好睏啊,睡覺了.