如何反編譯apk文件

相信大家在安裝使用了一個apk後,看到一些好的效果或實現,一般會很想知道這個是如何實現的。還好,android選的是java開發語言,所以經過一些小步驟,而作者又沒有用混淆的話,差不多可以返原70 ~ 90 的java實現,下面我就來說下Android apk 的反編譯步驟:

  1. 解壓縮apk包:apk文件說到底就是一種最常見的zip,你用UE或Notepad++等文本編輯工具打開apk文件,可以看到開頭的兩個字母:PK,用7z或winrar就可輕鬆地解壓apk文件;

  2. 反編譯dex文件:解壓apk文件後,你會發現res目錄的圖片沒有加密,但java源碼編譯成了一個classes.dex文件,無法用普通的反編譯class文件的方法來處理。下載一個軟件可以將dex文件轉換成普通的jar包,這個軟件名字叫:dex2jar(http://code.google.com/p/dex2jar/ 這個工具好象還是國人開發的 ~_~),去這個網站下載最新版並解壓到一個目錄,並這這個目錄加到系統PATH變量中,就可以直接用: dex2jar.bat 或 dex2jar.sh 轉換dex文件了,命令如下:dex2jar.bat classes.dex,將在同目錄得到普通jar包:classes.dex.dex2jar.jar,就可以用處理普通jar包的方法來反編譯這個jar包;

  3. 反編譯jar包:得到jar包後,下載自已喜歡的反編譯工具。我推薦大家用JD-GUI (http://java.decompiler.free.fr/?q=jdgui ),有比較簡單的圖形界面,可以反編譯單個class文件,也可以反編譯jar包,比較方便;

  4. 反編譯xml文件:打開解壓的res\layout目錄,有很多xml文件,如果你想看下作者是如何設計界面的,你會很失望,因爲你看到的是一大堆亂碼!這個時候我們需要下載一個jar包來解決這個問題:AXMLPrinter2.jar (http://android4me.googlecode.com/files/AXMLPrinter2.jar),將這個jar包放在任意目錄,在確保你已經裝了jdk的情況下,運行這個命令可反編譯xml文件: java -jar AXMLPrinter2.jar AndroidManifest.xml >AndroidManifest_decode.xml,打開AndroidManifest_decode.xml,你會發現一切正常!

發佈了3 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章