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包中的文件逐个分析