1. 程式人生 > >Android 反編譯APK詳解

Android 反編譯APK詳解

1.反編譯工具:下載

1.1 apktool:反編譯資原始檔

1.2   dex2jar-2.0:反編譯java程式碼

1.3   apk檔案:待反編譯的檔案

2.反編譯流程:

2.1 反編譯資原始檔

 ①  將要編譯的apk檔案複製到解壓後的apktool目錄下
 ②  解包:開啟控制檯(Windows + R ,輸入cmd) ;        定位到apktool的資料夾;        輸入命令列:apktool d -f  xxx.apk -o 資料夾名字;
       資料夾中就是app的資原始檔
 ③  重新打包APK(不是必要步驟)
     在apktool目錄下的終端中繼續輸入命令列:apktool b 資料夾(②中的資料夾名字);
     在資料夾中會出現一個dist資料夾,裡面有一個apk;    接著就需要對這個apk簽名了,簽名軟體使用的是 Auto-sign,終端定位到這個這資料夾,執行命令列:

     java -jar signapk.jar testkey.x509.pem testkey.pk8 XXX.apk XXX_signed.apk
   然後開啟資料夾Auto-sign資料夾下的Sign.bat,在這裡有兩種情況:如果報錯:FileNotFindException,就需要修改Sign.bat這個檔案,用記事本開啟這個檔案,修改對應的apk路徑,然後再次執行命令列,點選Sign.bat;


  如果沒有報錯,點選Sign.bat這個檔案會顯示如下:


最後在dist資料夾中會有兩個檔案
____________________________________________________________________________________      2.2 反編譯原始碼  ①  將apktool資料夾下的apk檔案更改字尾名為.zip或者.rar:

 ②  解壓這個檔案到到一個資料夾(最好不要解壓到當前資料夾),解壓之後會得到一個classes.dex檔案:


 ③   將classes.dex檔案複製到與 apktool 同級目錄的資料夾  dex2jar-2.0  下面,替換原來的classes.dex
,刪掉原來的  classes-dex2jar.jar  這個檔案

 ④  開啟終端,定位到資料夾 dex2jar-2.0 這個下面,執行命令:
d2j-dex2jar classes.dex之後,會看到資料夾dex2jar-2.0  下面有一個  classes-dex2jar.jar  檔案,如果③中的沒有刪除掉這個檔案,可能會有異常。

⑤ 檢視原始碼,上步驟生成的 classes-dex2jar.jar 就是我們要的原始碼,用資料夾dex2jar-2.0 下面的 jd-gui.exe 開啟即可檢視原始碼了。
接下來就是著看這些混過的abcdef...的程式碼了