第 13 章 Android逆向
在第 12 章中,我们了解了爬取 App 数据的一些基本操作,主要包括抓包原理和使用 Appium、Airtest 这些自动化工具完成爬取的流程。但很多时候,这些内容并不足以保证我们有效地完成爬取工作,例如在抓包过程中遇到问题,大家常听说的 SSL Pinning 就可能导致无法正常抓包。另外,使用 Appium、Airtest 这些工具爬取数据的效率并不高,因为这些都属于纯 UI 层的操作,如果爬取过程中一些点击、滑动等交互比较复杂,那么实现起来就相对困难。除了这些利用 Appium、Airtest 爬取图片或视频数据时也确实比较麻烦。
实际上,App 中的很多数据是通过接口获取并渲染在 App 中的。如果我们能直接从根源出发,找出 App 构造接口请求的真正逻辑,包括一些加密参数怎么生成、一些风控怎么避免,就可以利用 Python 脚本构造请求或者通过 Hook 的方式爬取数据了,这样不仅能省去一些基于 Appium、Airtest 的 UI 交互操作,还能大大提高爬取效率。另外,SSL Pinning 技术其实是在 App 内部做了一些限制和校验,我们找到根源就可解决其带来的抓包问题。
SSL Pinning(SSL 证书绑定)是一种增强应用程序与服务器之间通信安全的技术。它通过将服务器的公钥或证书预先嵌入到客户端应用程序中,确保客户端只与特定的服务器建立加密连接,从而防止中间人攻击(MITM) |
总之,要想真正地挖掘底层深处的逻辑,就必须学习一些 Android 逆向相关的知识。例如借助 jadx、JEB 等工具对 apk 文件进行反编译,还原 Java 代码并分析内部的逻辑; 借助 Hook 工具(如 Xposed、Frida)拦截和改写一些关键逻辑,从而截获关键的数据或加密信息; 借助反汇编工具(如 IDA Pro)逆向分析、调试、模拟 Android Native 层的实现逻辑,探寻 Native 层的实现逻辑。
本章就主要介绍 Android 逆向的相关知识,包括以下内容。
-
jadx、JEB 等工具的用法,实现 apk 文件的反编译和代码分析。
-
Xposed 框架、Frida 等工具的用法,Hook 或模拟 Android Java 层和 Native 层的代码。
-
如何利用 Xposed 框架、Frida 工具解决抓包过程中常见的 SSL Pinning 问题。
-
反编译过程中常用的脱壳技术和相关原理。
-
Android Native 层 so 文件的逆向分析方法。
-
Android Native 层 so 文件的模拟调用和常见的数据爬取方法。