安卓应用逆向分析相关技术的研究,除了介绍常用的逆向工具外,主要研究的相关技术有重包装技术、Smali注入技术、签名绕过、静态分析、无源码调试、进程注入、函数劫持等。在此基础上,提出了Android应用的逆向分析方案,并从不同的技术角度对Android应用进行了分析,并从Java层和Native层两层的代码逻辑进行了分析。
逆向工具
用逆向分析技术分析Android应用,结合逆向分析工具可以显著提高逆向分析效率。Android平台下常用的逆向分析工具有如下几种:
(1)Baksmali:一个工具,将dex文件反编译为Smali语言。
(2)APKtool:APK重打包工具,可以实现APK解包和重打包功能。
(3)Jarsigner:一种签名工具,对jar包或APK包签名。当Jarsigner工具签名时,将keystore文件用作签名私钥,所以首先需要生成keystore文件。签署的说明如下:
jarsigner-verbose-keystorePath]-signedjar[OutAPK][InAPK][alias]
命令格式和参数意义:-verbose表示输出签名过程的详细信息;-keystorePath[keystorePath]表示用于签名的私钥keystore文件的位置;-signedjar[OutAPK]表示已签名的APK文件名;[APKIn]表示证书别名。
(4)Jadx:可以实现APK包的反编译,将其中的dex文件反编译为Java代码,这有助于对Java层代码进行静态分析,类似工具dex2jar和jd-gui的结合使用。
(5)Smalidea:与IDEA开发环境相结合,可以实现对Smali代码的动态调试。
(6)IDApro:交互式反汇编,可提供多种平台下的静态反编译,本文主要借助这个工具对Android应用程序中的Native层代码进行逆向分析。