如何使用Reqable分析Android模拟器应用流量

今天写一篇教程,讲解如何在Android模拟器上使用Reqable进行流量分析。

1. Android系统证书策略

首先,简单概述下Android系统的证书策略,可以帮助我们更好地分析问题。

在任何一个系统上,都会有一个CA证书管理器,里面内置了绝大多数常用的CA根证书。只有被这些根证书签发的SSL证书才能被系统信任(信任才能使得HTTPS等基于SSL协议的连接正常握手),Android系统也不例外。我们可以在设置中搜索信任的凭据查看系统中所有的证书。

在Android系统上,证书分为两个类型:系统证书用户证书。系统证书是系统出厂(或OTA)内置的,用户证书是用户自行安装的。

那么,系统证书和用户证书又什么区别呢?

目前Android的系统已经迭代到版本14.0了,对证书机制有一个非常重要的分水岭:Android 7.0。在7.0版本之前(不包括)用户证书和系统证书的权威性是等价的,也就是是系统会无条件信任用户证书。很明显,这可能带来一些安全隐患,所以从7.0开始,Android默认不再信任用户证书了。正常情况下,系统证书用户是没有权限修改(添加或者删除证书文件)的,用户证书则是没有限制的。

对于我们分析Android系统的流量,从Android 7.0开始就有了限制,Reqable/Charles/Fiddler等调试工具的证书安装到用户证书目录无效了,只有安装到系统目录才有效。

严格来说,上面这段话并不是完全正确的。Android系统为了兼容性考虑,如果App的 targetSDKVersion < 24 在Android 7.0+系统上也是可以信任用户证书的。当然,目前绝大多数App的targetSDKVersion都超过24了。

这种限制对于Android开发者而言也是相当不友好的,所以Android额外补充了网络安全配置文件功能,可以支持开发者在App中配置可以信任哪些用户证书。具体配置方式详见这里

从根本上解决证书问题,唯一可行的方式就是将调试工具的CA证书放到系统目录下,重新编译系统镜像是一种方式,但是粗暴了些。常规的方式还是解锁系统分区,然后手动写入CA证书文件。

2. Android模拟器

前面背景知识科普完了,下面以Android官方模拟器为例,讲解如何使用Reqable进行流量分析。

2.1 模拟器安装

首先下载安装Android Studio,无需梯子,直接下载速度非常快。

screenshot_01.png

安装完成后启动,启动后无需新建项目,点击More Actions -> Virtual Devices Manager,打开模拟器管理器界面。

screenshot_02.png

点击Create virtual Device,打开模拟器列表界面:

screenshot_03.png

Android官方提供了大量的模拟器型号,包括手机、平板、电视、穿戴设备等,我们这里选择创建一个手机模拟器Pixel 6

screenshot_04.png

注意,请勿选择包含Play Store的型号,无法进行Root操作。不同的系统下,模拟器的架构不一样。例如我这里是MacBook M2,推荐的都是arm64架构的模拟器,性能是最佳的。在Windows x64平台下,推荐的一般都是x64架构的模拟器。

接下来,选择系统版本,然后点击Release Name右边的下载图标下载系统镜像,我们这里以Android 13.0为例。系统镜像下载完成后,点击Next进行下一步。

screenshot_05.png

这一步可以对模拟器进行一些参数配置,例如内存大小、存储空间等,我们忽略这个配置。最后,点击Finish,完成模拟器的创建。

screenshot_06.png

2.2 模拟器启动

注意,这里我们通过命令后启动模拟器而不是通过GUI,因为需要追加启动参数。

首选,配置下Android SDK的环境变量,方便我们使用adbemulator命令。

export PATH="$PATH:/Users/megatronking/Library/Android/sdk/platform-tools"
export PATH="$PATH:/Users/megatronking/Library/Android/sdk/emulator"
export PATH="$PATH:/Users/megatronking/Library/Android/sdk/tools"
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"

这里是MacOS的环境变量配置,Windows略有不同。这里一定要注意PATH的先后顺序,否则模拟器可能无法启动。

接下来,我们使用emulator命令启动模拟器,Pixel_6_API_33是模拟器的名字。我们在Android StudioDevice Manager中可以看到模拟器的名字,将空格替换成下划线即可。

emulator -avd Pixel_6_API_33 -writable-system

如果没有报错的话,我们会看到模拟器启动成功了。

2.3 解锁系统分区

我们需要以root模式运行adb服务,新开一个命令行窗口,输入命令:

adb root
# 输出 restarting adbd as root

禁用secure boot verification,输入命令:

adb shell avbctl disable-verification
# 输出 Successfully disabled verification. Reboot the device for changes to take effect.

remount全部分区,输入命令:

adb remount
# 输出 Using overlayfs for /system
# 输出 Using overlayfs for /vendor
# 输出 Using overlayfs for /product
# 输出 Using overlayfs for /system_ext
# 输出 Now reboot your device for settings to take effect
# 输出 remount succeeded

可以看到system已经解锁了,下面就可以导入CA证书了。

2.4 导入CA证书

我们在Reqable中先导出CA证书,点击左下角下载按钮。

screenshot_07.png

使用下面的命令,将上一步下载的证书导入到模拟器系统证书目录:

adb push reqable-ca.crt /system/etc/security/cacerts/364618e0.0

导入后,我们在模拟器系统的Settings中搜索credential,点击Trusted Credentials检查Reqable的CA证书是否存在于System目录中。

screenshot_08.png

上图表示CA证书已经导入成功了。

3. 流量转发

我们需要将Android模拟器的流量转发到PC端的Reqable进行分析,有下面两种方式。

3.1 代理转发

将模拟器的代理配置设置为Reqable的代理服务器地址,点击模拟器右侧功能操作栏最下面的...按钮打开模拟器设置页面。

screenshot_09.png

3.2 VPN转发

在模拟器上安装socksdroid,打开下面的地址下载apk文件。

https://github.com/bndeff/socksdroid/releases/download/1.0.3/socksdroid-1.0.3.apk

将下载好的socksdroid直接拖到模拟器窗口中进行安装,也可以使用adb进行安装。

adb install socksdroid-1.0.3.apk

安装完成后打开socksdroid,配置电脑的IP地址和Reqable代理端口,并启动右上角的开关。

screenshot_10.png

4. 流量分析

在Reqable中启动调试,注意这时候无需配置系统代理,因为我们不需要分析电脑的流量。

在模拟器中使用Chrome打开Reqable官网测试下,效果OK。

screenshot_11.png

我们再测试下原生应用,使用Android Studio写个Demo发送个请求试试:

screenshot_12.png

看起来也没有问题,搞定。

screenshot_13.png

4. 结尾

更多Reqable的使用教程,请查看:

感谢阅读,再见!

原文链接:https://juejin.cn/post/7249623814149406778
作者:MegatronKing

最后

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
在这里插入图片描述
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

全套视频资料:

一、面试合集

在这里插入图片描述
二、源码解析合集
在这里插入图片描述

三、开源框架合集
在这里插入图片描述
欢迎大家一键三连支持,若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取↓↓↓

猜你喜欢

转载自blog.csdn.net/Eqiqi/article/details/131445793