當前位置:編程學習大全網 - 源碼下載 - 如何進行ODEX反編譯實例

如何進行ODEX反編譯實例

反編譯普通的APK文件:

對於普通的APK/DEX文件的反編譯,其實工具有很多, 包括:

ByteCode Viewer: 壹個可視化的集成工具,說實話,不太好用,不夠穩定,生成代碼質量中等。

dex2jar + jd_gui: 這兩個工具組合還可以, 用起來比ByteCode Viewer麻煩壹些,但比較穩定,生成代碼質量中等。

反編譯ODEX文件:

Android 5.0 Lollipop以後,Google用ART代替了以前的Dalvik,對於普通的app來說我們仍然可以用上面的方法來把dex文件反編譯成Java源代碼。但對於系統預裝的App,特別是類似應用商店,播放器等, 妳會發現這些應用的apk文件中找不到對應的classes.dex文件,而是會發現在其子目錄下有個.odex文件。 那如何反編譯這個odex文件呢?我通過google查了查,知道應該用baksmali,但從github上下載了幾個版本都不行,報各種不同錯誤。

具體方法如下:

1. 從 這裏 下載工具包, 解壓縮到本地。 這裏的baksmali的版本是2.0.3. 不同版本的baksmali針對的Android內核不同。有時候高版本反倒不好用。

2. 打開工具所在目錄, 按住shift鍵, 點擊鼠標右鍵,打開Windows命令窗口

3. 把 odex文件拷貝到該目錄

4. 在命令窗口運行: oat2dex.bat *.odex . 正常情況下,應該顯示OK等信息。如果報錯的話,說明這個文件無法轉換,後面的也不用試了。

5. 運行 oat2dex.bat *.odex temp.dex . 運行後會創建壹個temp.dex文件。

6. 運行 java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o source . 運行後會創建壹個source的文件夾,並將temp.dex反編譯到該文件夾。-a 21 表明的是Android內核的版本21

7. 運行 java -jar small-2.0.3.jar -a 21 source -o classes.dex , 反編譯為classes.dex文件。

需要註意的是:由這種方式反編譯成的classes.dex 文件相比原生的classes.dex 還是缺少了些信息,因此反編譯這種classes.dex 文件後生成的java代碼可讀性會更差些。

8. 用在線工具JADX 來把 classes.dex 最終反編譯為java代碼。

  • 上一篇:閱讀翻頁源代碼
  • 下一篇:興趣電商之大,抖音盒子裝不下
  • copyright 2024編程學習大全網