APK是Android Package的縮寫,即Android安裝包(APK)。APK是類似Symbian Sis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。APK文件和sis一樣,把android sdk編譯的工程打包成一個安裝程序文件,格式為apk。
APK文件其實是zip格式,但后綴名被修改為apk,通過UnZip解壓后,可以看到Dex文件,Dex是Dalvik VM executes的簡稱,即Android Dalvik執行程序,並非Java ME的字節碼而是Dalvik字節碼。
APK反編譯就是通過使用APK反編譯工具將APK文件中的源文件和資源反編譯出來,得到的源文件和資源文件可以進行處理后再進行編譯,以達到系統解剖分析,個性化定制,漢化等目的。
APK反編譯有很多工具,本次實驗中我們使用dex2jar工具。dex2jar 是一個用來將 Android 的 Dalvik Executable (.dex) format 文件轉成 Java 類文件的工具。該項目地址是:http://code.google.com/p/dex2jar/
針對JAR包的java反編譯工具,我們使用jd-gui工具。jd-gui是針對Java平台的反編譯工具,它可以將Java的字節碼文件(class文件)反編譯獲得java文件。反編譯得到的代碼是非常接近於源代碼,但是或多或少與源代碼有一些差異,這點需要使用時注意。
實驗步驟一
文件解壓
進入實驗環境,在C盤根目錄“APK逆向分析實驗”文件夾下找到SD-Booster_1.5.2.apk文件。將文件重命名為zip后綴。然后使用WinRAR程序將文件解壓。
實驗步驟二
獲得JAR包
要從APK文件獲得JAR包需要使用專門的工具dex2jar。dex2jar 是一個用來將 Android 的 Dalvik Executable (.dex) format 文件轉成 Java 類文件的工具。
首先在C盤根目錄“APK逆向分析實驗”文件夾下找到dex2jar-0.0.9.15.zip文件,將其解壓。
將APK文件解壓獲得的classes.dex文件放到dex2jar解壓后的文件中。如下圖示。
然后在該目錄下進入Windows命令行窗口。輸入命令:
d2j-dex2jar classes.dex
執行完成后,在相同目錄下得到JAR包。
實驗步驟三
源代碼分析
要從JAR包進行源代碼分析,需要使用反編譯工具jd-gui。jd-gui是針對Java平台的反編譯工具,它可以將Java的字節碼文件(class文件)反編譯獲得java文件。
首先在C盤根目錄“APK逆向分析實驗”文件夾下找到jd-gui文件,雙擊打開。將JAR包拖入jd-gui窗口,將自動對JAR包進行反編譯。
此時,你可以從jd-gui對JAR包中的文件逐個分析