Android apk 文件反編譯&&如何反編譯xml文件&&如何看到apk文件中的java源代碼

以下方法僅供學習使用,不得隨意反編譯apk文件並使用

資源位置,同樣在csdn資源頁中:apk反編譯工具包下載

方法一:

直接使用文件夾中的Androidby 文件夾中的Android反編譯工具(64)位.exe或者使用Android反編譯工具.exe,雙擊後選擇需要反編譯的apk文件即可。但是該方法往往不成功,會由於簽名等原因報錯,如果成功反編譯生成的文件中xml文件是可以直接查看的不會亂碼,但是clases.dex文件不一定會反編譯成功,所以下面介紹其他方法。


方法二:

使用apktool直接將apk文件反編譯爲文件夾

用法:apktool  d  -f  <.apk文件的詳細路徑>   <生成文件夾的詳細路徑>

(使用中注意最好文件夾名字不要中間有空格,其次最好將apk文件名稱改的簡單一點且不要出現中文)

不過由於反反編譯機制使用該方法也會拋出異常,由於各個apk文件控制的不同此時得到的文件夾中內容就不太一樣了,有些apk可以反編譯成功有些就不行,如果得到xml文件但是亂碼,後面有講解方法,得到classes.dex 文件後面也有講解,得到smali或均爲該後綴的文件破解後面也有講解。


通過上面步驟可以得到classes.dex文件該文件爲java轉爲Android中運行的文件,使用dex2jar工具將其變爲jar包方法如下:

dex2jar <classes.dex文件的詳細路徑>

執行完該命令後會自動在classes.dex文件路徑下生成文件:classes_dex2jar.jar

再用文件夾中的jd-gui-0.3.5.windows文件夾下的jd-gui.exe

查看jar文件中的java文件這樣就可以看到源java代碼,不過可能由於加入混淆代碼會使得文件名變爲aaa之類。


也可以直接解壓apk文件因爲apk文件本身就是壓縮包的形式,直接解壓后里面的東西都有不過由於簽名等原因直接解壓的文件裏面的res或者其他xml文件會變成亂碼,下面介紹可以將xml變爲正常的形式的工具。

打開文件夾下的反編譯xml文件夾,將要反編譯的xml文件複製到layout目錄下,直接複製雙擊.bat文件即可運行

如若.bat文件損壞,在有java環境下運行-jar文件包 即可

.bat 文件內容

for /r layout %%a in (*.xml) do @java -jar AXMLPrinter2.jar"%%a" >>"%%a".txt


下面介紹因爲有反反編譯機制後的classes.dex文件的其他方法,打開文件夾下面的Baksmali_Smali文件夾把apk文件解壓,找出classes.dex文件。

1、然後先用baksmali把classes.dex導出一個classout文件夾.命令爲:java-jar baksmali-1.4.2.jar -o classout/ classes.dex(注意classout\後面的空格)

2、用smali把classout文件夾轉換成classes.dex(這是轉換過的).命令爲:java-jar smali-1.4.2.jar classout/ -o classes.dex(注意classout\後面的空格,此文件位置也可自定義)

3、使用 dex2jar 把classes.dex轉換成jar ,命令爲:dex2jar.bat classes.dex

4、然後使用jd-gui 打開這個jar.

前面提到的samli文件或以.samli後綴的文件使用,即爲從第2步操作就好,不過將classout文件夾換做現有文件夾就好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章