編輯:關於Android編程
被編譯器處理過的代碼和資源已經打包成了APK,有的甚至被轉化成了二進制文件。但是我們也有一些方法,把這些編譯過的內容給變回原來的樣子,這個過程叫做-反編譯。
反編譯分為兩個部分:一個是資源文件,一個是java文件。so文件是c++編譯的結果,可以認為是不可反編譯的(反編譯成匯編指令,估計大部分人也看不懂)。
APK tool是反編譯的有力工具,據說是谷歌提供的官方的反編譯工具,可以把APK目錄解包,資源文件全部還原成編譯前的樣子,而dex文件反編譯成smail格式的文件(而不是我們希望的java原文件)。smail格式文件是安卓系統的虛擬機執行時使用的語法,我們不會去講解這部分內容。
APKTool
的最新版本;
2. 在官網下載與`APKTool`配套的[腳本文件-apktool.bat](https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat),其內容如下;
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
不過該腳本有一個小小的問題-需要去掉apktool.jar
前面的一個\
;下載完成後用文本編輯器打開該腳本,將這一段修改成,
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
3. 將下載的APKTool壓縮包解壓,與腳本文件一起放到你希望存放的目錄下,例如`D:\Work\apktool`;
4. 為了使用方便,將存放目錄加入到系統的環境變量中; `我的電腦`點擊右鍵->`屬性`->`高級系統設置`->`環境變量`,選中`Path`這一項,進行編輯;
在編輯欄最後輸入apktool所在的路徑`D:\Work\apktool`;如果該項之前還有別的路徑,請用`;`分隔開;5. 啟動`cmd命令行窗口`,輸入`apktool -version`,如果看到類似如下內容就說明安裝成功了;
$ apktool -version
2.0.3
至此,APKTool就安裝並設置完成了。
如果無法訪問官網下載,請上安豆網,下載最新的版本。
接下來開始使用APKTool,
1. 啟動cmd命令行窗口
;
2. 假設apk放在D:\Test.apk目錄,輸入
apktool d D:\Test.apk,開始反編譯
Test.apk`;
$ apktool d D:\Test.apk
I: Using Apktool 2.0.3 on Test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Gym\apktool\framework\1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
3. 編譯的結果就在cmd命令行窗口
啟動的位置下,反編譯的目錄結構如下,
現在打開res目錄下的資源都被還原了,打開後就能看到原始的設計;而java源碼被反編譯成了smli格式的文件。
##2.3 反編譯java源代碼要查看java源碼,有三個方式: 1. 把dex文件轉換成smail文件,然後用專門的工具將smail翻譯成java; 2. 把dex文件轉換成java的通用編譯格式class文件,然後用專門的工具將class翻譯成java; 3. 把dex文件轉換成jar文件,然後用專門的工具將jar翻譯成java; 這裡我們采用第三種方法。 ### 2.3.1 工具准備首先准備反編譯用的工具。
1. 在官網下載[dex2jar](http://sourceforge.net/projects/dex2jar/files/)工具,它可以把APK中的dex文件轉化成jar文件;
2. 下載完成後,將壓縮包解壓,放到你希望存放的目錄下,例如`D:\Work\dex2jar`;
3. 為了使用方便,將存放目錄加入到系統的環境變量中;
4. 在官網下載[JD-GUI](http://jd.benow.ca/),它可以查看jar文件的java源碼;
5. 下載完成後,將壓縮包解壓,放到你希望存放的目錄下,例如`D:\Work\jd-gui`;
至此,java源碼的反編譯工具就安裝並設置完成了。如果無法訪問官網下載,請上[安豆網](http://anddle.com/resource)下載,那裡將這幾個工具整體打包,方便大家使用。 ###2.3.2 反編譯代碼接下來開始使用反編譯工具,1. 解壓APK文件,找到Android軟件安裝包中的`class.dex`;
2. 用dex2jar工具將classes.dex生成jar文件;啟動`cmd命令行窗口`,輸入`d2j-dex2jar D:\classes.dex`,開始反編譯`classes.dex`,`d2j-dex2jar`後面需要跟上要反編譯的dex文件路徑;
$ d2j-dex2jar D:\classes.dex
dex2jar classes.dex -> .\classes-dex2jar.jar
結果生成了classes-dex2jar.jar
文件;
3. 進入JD-GUI目錄,運行JD-GUI工具,打開上面的生成的jar文件,即可看到java源代碼。
轉載請注明出處:http://blog.csdn.net/llew2011/article/details/51598682我們平時開發中總會遇見一些奇葩的需求,為了實現
作者:泥沙磚瓦漿木匠 網站:http://blog.csdn.net/jeffli1993 個人簽名:打算起手不凡寫出鴻篇巨作的人,往往堅持不了完成第一章節。 交流QQ
vivo X9作為此前X7的升級版,外觀變化不大,主要變化在於背面天線變了,采用類似魅族MX6/iPhone7類似的弧線天線設計,背面金屬屏占比更高,外觀顯
第一步: 打開手機主菜單,選擇“設置”,然後選擇“無線和網絡”第二步:選擇“虛擬專用網設置&rd