1. 程式人生 > >Android 反編譯程式碼

Android 反編譯程式碼

反編譯程式碼

要想將APK檔案中的程式碼反編譯出來,我們需要用到以下兩款工具:

將這兩個工具都下載好並解壓,然後我們就開始對Demo程式進行反編譯。解壓dex2jar壓縮包後,你會發現有很多個檔案,如下圖所示:


其中我們要用到的是d2j-dex2jar.bat這個檔案,當然如果你是linux或mac系統的話就要用d2j-dex2jar.sh這個檔案。
然後我們將Demo.apk檔案也進行解壓,如果不知道怎麼直接解壓的可以先將檔案重新命名成Demo.zip,然後用解壓軟體開啟。解壓之後你會發現裡面有一個classes.dex檔案,如下圖所示:


這個classes.dex檔案就是存放所有java程式碼的地方了,我們將它拷貝到dex2jar解壓後的目錄下,並在cmd中也進入到同樣的目錄,然後執行:

 

d2j-dex2jar classes.dex
  • 1

執行結果如下圖所示:


沒有報任何錯誤,這就說明我們已經轉換成功了。現在觀察dex2jar目錄,你會發現多了一個檔案,如下圖所示:


可以看到,classes-dex2jar.jar這個檔案就是我們藉助工具之後成功轉換出來的jar檔案了。但是對於我們而言,jar檔案也不是可讀的,因此這裡還需要再借助一下jd-gui這個工具來將jar檔案轉換成java程式碼。
下面就很簡單了,使用jd-gui工具開啟classes-dex2jar.jar這個檔案,結果如下圖所示:


OK,由此可見,我們的程式碼反編譯工作已經成功了,MainActivity中的程式碼非常清晰,基本已經做到了90%以上的還原工作。但是如果想要做到100%的程式碼還原還是非常有難度的,因為像setContentView()方法傳入的引數,其實就是一個資源的id值而已,那麼這裡反編譯也就只能將相應的id值進行還原,而無法變成像R.layout.activity_main這樣直觀的程式碼展示。 --------------------- 本文來自 guolin 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/guolin_blog/article/details/49738023?utm_source=copy