Android逆向介绍
由于移动互联网的快速发展以及安卓手机的普及,移动应用的安全性也越来越被人关注,不管是安卓还是苹果每年都会被报出许多安全相关问题,其中属安卓端的安全对抗最为激烈,提到安全对抗那么首先需要了解的就是逆向,逆向是一切攻击行为的基础,攻击者一般是拿不到程序源码的,所以只有通过一些逆向手段来分析目标逻辑,从而实现进一步的攻击,下面来分析一下关于Android逆向的应用领域。
首先最常见的就是安卓软件破解,包括同行间的竞品分析,黑灰产的游戏内购,外挂,盗版仿冒,VIP功能的破解,以及协议分析后的用户数据爬取,薅羊毛等。其次是对安卓漏洞的挖掘及利用,主要分为应用层漏洞、系统层漏洞以及内核层漏洞。再有就是近两年监管单位比较关注的安卓应用的隐私合规审计,最后是对恶意软件的分析,包括安卓病毒的研判查杀,隐私窃取勒索病毒或钓鱼欺诈软件的分析溯源等。
Android逆向知识体系
对安卓逆向的应用场景有个基本了解后再来看下安卓逆向需要学习哪些知识
首先是开发相关的知识,包括以下知识点:
- 安卓开发语言:Java、C/C++、Smali、ARM/ARM64、Python、
- 安卓开发工具:Android Studio的使用、Visual Studio Code的使用
- 源码分析工具:SourceInsight工具的使用、
- 安卓系统源码、内核源码的编译与修改、设备刷机、
- 安全开发知识:代码混淆技术、应用加固技术、动态加载与插件化技术、
然后是逆向相关的一些必备知识点:
- 常见分析工具的使用:IDA Pro、GDB、JEB、Jadx、GDA等、
- APK中文件格式的熟悉:APK、DEX、ELF、
- 静态分析方法与动态调试技巧、
- 注入原理、Hook原理以及常见hook框架、
- 常见反调试原理及其绕过、模拟器检测及其绕过、
- 基础密码学、网络基础、协议分析技术、抓包技术、
Android逆向常用工具介绍
最后看下逆向工作中经常会用到的一些工具,这里简单介绍下每个工具的用途,后续会详细对每个工具进行使用。
APK反编译工具:
-
AndroidManifest.xml清单文件解析:AXMLPrinter2
- 该工具主要用于对APK中的清单文件进行解析,有助于我们了解目标apk的组件信息。
-
APK反编译工具:baksmali、smali、dex2jar、apktool
- baksmali:该工具用来将一个DEX文件反编译为Smali汇编文件
- smali:该工具用来将Smali汇编文件回编译为Dex文件
- dex2jar:该工具用于将dex文件反编译为jar文件
- apktool:该工具支持将apk反编译为Smali汇编文件,也可以将Smali汇编回编译为apk
-
APK签名工具:signapk
- signapk:用于对回编译后的apk文件进行签名,没有签名apk文件安装到到模拟器或手机中,会报错
-
集成工具:AndroidKiller
- AndroidKiller:一个将上面几种工具集合在一起的工具
静态/动态分析工具:IDA Pro、GDB、JEB、Jadx、GDA、
Hook工具:Xposed框架、Frida框架、
文件格式分析/文件对比工具:010Editor、BCompare、
安卓源码分析工具:SourceInsight、understand、
协议分析抓包工具:Burpsuite、Fiddler、WireShark、
安卓设备:模拟器、实体机、