前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安卓7.0+系统抓包方案

安卓7.0+系统抓包方案

作者头像
Chor
发布2023-01-16 08:09:05
3.5K0
发布2023-01-16 08:09:05
举报
文章被收录于专栏:前端之旅

声明:本文所讲内容只用于学习相关技术,勿用于其它用途

最近在帮人写一些自动签到的脚本,涉及到了在安卓7.0+系统中如何对 app 和微信小程序进行抓包的问题。这里记录一下有效的抓包方案。

众所周知,不管是用 httpCanary、Fiddler 还是其它工具对手机进行抓包,都需要在手机上安装这些工具提供的根证书。但安卓从7.0版本开始已经不再信任用户自己安装的证书 —— 你仍然可以安装,但证书不会起作用,典型表现就是在开启抓包工具的情况下,被抓包的 app 是处于断网状态的。那么如何解决这个问题呢?有下面的方案可供选择:

root

究其根本,不能抓包是因为系统不信任用户证书,那么只要想办法将用户证书放到系统证书目录下,证书就可以被当作系统证书而得到信任了。但这个操作的前提是手机需要 root,这样才能操作系统证书目录。而 root 有一定的风险,所以 pass。

虚拟空间 + httpCanary

有很多 app 可以实现在手机中开辟虚拟空间。

(1)VMOS pro:可以在手机中开一个虚拟机,而这个虚拟机是很容易 root 的,对其 root 后将目标应用导入并安装证书,最后在真机中用 httpCanary 抓包即可。但实际下载 VMOS pro 之后,由于 rom 一直下不来,导致连应用都没进去,遂放弃。

(2)平行空间:可以在谷歌商店下载,它不支持导入 64 位应用,所以还得下载一个 64 bit support 补丁。平行空间应用的版本必须适配 httpCanary 的版本,否则还是无法抓包,而 httpCanary 虽然内置了对应版本的平行空间下载入口,但点击下载始终没有反应。最终,在我终于找到版本适配的 httpCanary 和平行空间,并且也成功进入目标应用之后,仍然还是遇到了抓包断网的问题,于是也只能放弃。

(3)VirturalXposed + justTrustMe:还是类似的应用,justTrustMe 模块的作用是禁止在虚拟空间中运行的 app 进行证书校验,所以自然也就不存在证书信任问题。但我将目标应用导入 VirturalXposed 之后,发现应用一打开就闪退,所以这个方法也不行,只能放弃。

反编译

对应用的 apk 文件进行反编译,修改其中的配置,让用户自己安装的证书被信任。由于我不是专业搞安卓的,同时这个方案要求第三方的开发者没有采取防止反编译的措施,所以 pass。

安卓模拟器 + Fiddler

没错,模拟器不仅能用来打游戏,也能用来抓包,而且这个方案出奇奏效。

还是回到最开始的问题,我们需要的其实只是一台低版本的安卓机,或者高版本但是能操作系统证书目录的安卓机,这样就无需担心证书问题 —— 而模拟器刚好都能满足这两个条件。考虑到目标应用无法在低版本安卓中运行,所以我在模拟器中使用的版本是安卓7.0,因为在模拟器中操作证书目录非常简单,所以版本高低也不是问题,有没有 root 更不是问题。下面讲一下关键步骤。

1)下载夜神模拟器,将目标应用的 apk 文件拖入到模拟器中安装,确保可以正常打开

2)将 Fiddler 的根证书 FiddlerRoot.cer 导出(高版本安卓拒绝超过两年有效期的证书,为了以防万一,可以用 Fiddler CertMaker 生成新的证书导入到 Fiddler 中,再导出来)

3)下载 64 位的 openssl,并将 openssl 的 bin 目录配置为系统环境变量。接着命令行执行如下操作。

将 cer 证书转化为 pem 证书:

代码语言:javascript
复制
openssl x509 -inform DER -in C:\Users\Chor\Desktop\FiddlerRoot.cer -out C:\Users\Chor\Desktop\FiddlerRoot.pem

获取 pem 证书的哈希值:

代码语言:javascript
复制
openssl x509 -inform PEM -subject_hash_old -in C:\Users\Chor\Desktop\FiddlerRoot.pem

使用哈希值重新命名 pem 证书:

代码语言:javascript
复制
ren C:\Users\Chor\Desktop\FiddlerRoot.pem abcdefgh.0

4)将证书 abcdefgh.0 转移到目录 C:\Users\Chor\Nox_share\ImageShare 下,这样证书就位于模拟器中了。

5)使用模拟器自带的文件管理器,打开 Pictures 目录,将证书 abcdefgh.0 转移到系统证书目录 system/etc/security/cacerts 中。这样,这个证书就成为了一个被信任的系统证书。

6)现在这个证书还不是可读的,所以需要修改证书的读写权限。而文件系统本身也是只读的,所以还得先解除系统的只读状态。如下:

代码语言:javascript
复制
su
mount -o remount,rw /system
cd /system/etc/security/cacerts
chmod 777 abcdefgh.0

这样,证书就有了最高读写权限,而且在系统设置中也可以看到这个证书。

7)电脑连接 wifi 或者手机热点,通过 ipconfig 获取 WLAN 的 IPv4 地址,同时 Fiddler 开放 8888 端口。此时,充当手机的模拟器和电脑位于同一网络,进入模拟器的网络设置界面,手动设置网络代理,将代理服务器地址设置为前面的 IPv4 地址,端口设置为 8888。这样,模拟器中收发的数据包就会经过 Fiddler 这个中间代理服务器。

8)所有准备工作都已经完成了,接下来在模拟器中打开目标应用,然后到 Fiddler 中愉快抓包吧~

小程序如何抓包?

前面介绍的都是对安卓 app 进行抓包,那么怎么对小程序抓包呢?这里提供三种方法:

(1)安卓模拟器 + Fiddler:

基本步骤和前面介绍的差不多。需要注意的是,我们的用户证书只是被系统信任了,还没有被微信信任 —— 微信 7.0+ 版本不会信任用户证书,它有自己的一个证书列表。如果要抓包,我们必须下载 7.0 以下的微信并导入到模拟器中,或者在模拟器中使用 7.0 以下的安卓系统,这样就可以无视微信版本。

(2)VirturalXposed + justTrustMe + 抓包工具:

基本步骤和前面介绍的差不多。虽然某些应用导入 VirturalXposed 之后无法打开,但微信不会,这个方法针对微信小程序是实测有效的。

(3)电脑端微信小程序 + Fiddler:

最简单的方法,不过最近小程序的架构升级了,所以在使用这个方法之前需要先进行额外的工作。打开任意一个小程序,在任务管理器中定位到微信小程序的进程,右键打开所在目录,然后跳转到 WMPFRuntime 文件夹。关闭微信,将整个 WMPFRuntime 文件夹删掉,然后重新打开微信并进入目标小程序,这时候发现 Fiddler 可以成功抓包了。

微信公众号如何抓包?

微信公众号的抓包只需要在 PC 端微信客户端操作即可,要点是必须使用微信内置浏览器打开公众号链接(其它浏览器无法打开公众号)。

参考文章:

Android 7.0+模拟器Fiddler抓包详细教程

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • root
  • 虚拟空间 + httpCanary
  • 反编译
  • 安卓模拟器 + Fiddler
  • 小程序如何抓包?
  • 微信公众号如何抓包?
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档