APP安全防护之APK反编译过程分析

       各种不良手机APP已经成为手机恶意扣费、不法分子的帮凶,手机安全问题严重影响了互联网+生态链的良性发展,严重影响了国家社会的安定。该文以安卓手机应用为目标对象,全面阐述了安卓应用安装包的风险及其应对措施,并提出了系统的反逆向工程解决方案。

outputo-20210809-092607-857-oohk.png

APK文件是Android应用的安卓包,即对应用源代码及相关库文件进行编译、打包,形成一份以*.apk格式的安装文件。APK文件实际上是zip格式,经过UnZip/Winrar解压后,将会看到一个解压文件夹,包括多个文件和子文件夹。在这些文件中,主文件是一个dex文件,dex是DalvikVMexecutes的缩写,也就是Dalvik字节码,而非JavaME的字节码。Android系统在运行安装包时首先需要解压,然后才能运行解释。由于所有的Java文件最终都会被编译到APK文件中,并且作为可被虚拟机识别的托管代码,反编译工具就可以模仿虚拟机来解释原理和机制,实现对dex主文件的反编译过程。AndroidfbyAPK反编译过程非常简单,最常用的反编译工具有:dex2jar、jd-gui、apktool、IDA、Androidfby、jadx等。

以下以dex2jar为例,演示了AndroidAPK的反编译过程。

1.要反编译的MyApp.apk后缀的名称被更改为MyApp.zip,然后解压。您会发现,解压的目录下主要有classes.dex、resources.arsc、AndroidManifest.xml和assets、lib、META-INF和res之类的文件夹。在这里,classes.dex是通过dx工具打包来编译java文件的。

2.生成的classes.dex文件放在dex2jar工具的文件夹中。然后找到命令行上位于dex2jar.bat的目录,输入dex2jar.batclasses.dex。

3.classes_dex2jar.jar文件将在上面的目录下生成,然后在工具jd-gui.exe中打开jd-gui.exe,您就可以使用它来打开先前生成的classes_dex2jar.jar文件。其它工具的反编译过程与上面的过程相似,一些反编译工具的功能更加强大,也可以直接反编译成C代码。带有大量xml文件的res\layout目录,直接打开就是一堆乱码。xml可通过apktool工具反编译到这里。流程如下:在命令行输入:apktooldMyApp.apkMyApp,并得到一个MyApp文件夹,该文件夹中的xml文件将被编译为可正。

经常看文件,完成资源文件反编译过程。

分享: