Android APK文件的逆向反编译

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程序将文件解压。

Android APK文件的逆向反编译

 

 

实验步骤二

获得JAR包

      要从APK文件获得JAR包需要使用专门的工具dex2jar。dex2jar 是一个用来将 Android 的 Dalvik Executable (.dex) format 文件转成 Java 类文件的工具。

      首先在C盘根目录“APK逆向分析实验”文件夹下找到dex2jar-0.0.9.15.zip文件,将其解压。

      将APK文件解压获得的classes.dex文件放到dex2jar解压后的文件中。如下图示。

Android APK文件的逆向反编译

 

 

然后在该目录下进入Windows命令行窗口。输入命令:

      d2j-dex2jar classes.dex

      执行完成后,在相同目录下得到JAR包。

Android APK文件的逆向反编译

 

 

实验步骤三

源代码分析

      要从JAR包进行源代码分析,需要使用反编译工具jd-gui。jd-gui是针对Java平台的反编译工具,它可以将Java的字节码文件(class文件)反编译获得java文件。

      首先在C盘根目录“APK逆向分析实验”文件夹下找到jd-gui文件,双击打开。将JAR包拖入jd-gui窗口,将自动对JAR包进行反编译。

      此时,你可以从jd-gui对JAR包中的文件逐个分析

Android APK文件的逆向反编译

 

 

 

Android APK文件的逆向反编译

上一篇:MySQL亿级数据量实时同步,小米如何完美hold住


下一篇:Android Init进程分析番外篇:9.0的init进程