作為Android開發者反編譯apk是我們需要掌握的技能,那么在Ubuntu環境下反編譯怎么進行Apk的反編譯呢?
工具
dex2jar使用
- 先參照上邊提供的地址下載并解壓dex2jar
- 然后再使用unzip命令解壓apk,我們會在目錄下邊看到.dex文件
- 執行反編譯命令
sh d2j-dex2jar.sh /home/im/Desktop/dex2jar/-debug-apk/classes.dex
上述命令執行的過程中可能會遇到一些問題:
問題1:提示:
d2j-dex2jar.sh: 36: d2j-dex2jar.sh: ./d2j_invoke.sh: Permission denied
原因:d2j_invoke.sh文件沒有執行權限
解決:添加可執行權限:sudo chmod +x d2j_invoke.sh
問題2:生產的jar可能為空
原因:d2j-dex2jar.sh執行會依賴其它的腳本(單獨拷貝出來執行會有問題)
解決:執行它的時候dex2jar的其它文件最好也在相同的目錄
正確運行結果:
im@58user:~/Downloads/dex2jar-2.0$ sudo chmod +x d2j_invoke.sh
im@58user:~/Downloads/dex2jar-2.0$ sh d2j-dex2jar.sh /home/im/Desktop/dex2jar/bangjob-apk/classes.dex
dex2jar /home/im/Desktop/dex2jar/bangjob-apk/classes.dex -> ./classes-dex2jar.jar
然后會在該目錄生成classes-dex2jar.jar文件。
jd-gui使用
- 先參照上邊提供的地址下載文件
- 然后直接打開jd-gui
可能遇到的問題:
jd-gui程序執行的時候可能沒有任何反應,那是因為操作系統可能缺少某些環境。執行該命令:sudo apt-get install gtk2-engines-murrine:i386 libgtk2.0-0:i386 libcanberra-gtk-module:i386 libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6 lib32ncurses5 lib32bz2-1.0 libgtk2.0-0:i386 libxxf86vm1:i386 libsm-dev:i386 libcanberra-gtk3-module:i386
后然再運行jd-gui程序,畫面即將展現~!~!
dex2jar.png