本文背景
想看看能否自动化发文,则对XX书APP进行抓包,然后发现网络错误,经查原因由APP使用SSL Pinning,于是开始了解决之路。
常规抓包原理
我们使用的fiddler、charles等抓包软件,抓包的原理是基于中间人攻击的。
- 正常的https通信过程
- https中间人攻击加密过程(前提需要将中间人证书安装到电脑或者手机等)
一般而言,我们对于普通APP的抓包,只需要电脑安装fiddler等软件,然后将fiddler证书安装到手机的系统证书中,然后配置手机的代理为同一局域网下的电脑内网ip加上fiddler暴露的端口即可抓到普通APP的包。为了阻止我们将中间人证书安装到本机受信任的证书列表从而进行抓包的方式,SSL Pinning出现了。
什么是SSL Pinning
SSL Pinning就是将证书或者公钥内置于客户端,进行SSL握手时,客户端对中间人/服务器返回的证书与内置的证书进行对比,如果不一致,则SSL连接失败,这就是我们抓包出现网络无法连接的原因所在。
如何解决SSL Pinning抓到我们心仪的包
- 安卓9以下的版本,使用Xposed + JustTrustMe模块。由于我的小米手机安卓版本为10,故未尝试。
- 使用Xposed的替代方案,EdXposed,支持安卓8-11。
EdXposed是Magisk的一个模块,所以我们需要先安装Magisk(Magisk是一个开源的Android系统修改工具,它主要用于在不破坏系统完整性的情况下进行系统修改和定制) Magisk建议下载23.0版本,我下载了27.0版本后模块界面没法联网查看,只能本地安装,并且EdXposed Manager识别不到Magisk安装的EdXposed模块,可能是我的问题,但是下载23.0版本就可以了。apk下载地址 github.com/topjohnwu/M… ,具体安装过程参考magiskcn.com/
现在,默认magisk已经正常安装运行,然后安装Riru以及EdXposed模块包,EdXposed版本对Riru版本有依赖,建议Riru版本25.4.4,EdXposed版本0.5.2.2。Riru下载地址github.com/RikkaApps/R… ,EdXposed下载地址github.com/ElderDriver… 下载完成后将zip包传输到手机,打开Magisk,点击模块界面,点击从本地安装,需要先安装Riru,选择Riru压缩包,进行安装,安装成功后安装EdXposed,重启手机。
安装EdXposed Manager,建议下载4.6.2版本,下载地址github.com/ElderDriver… 下载完成后传输到手机进行安装。然后安装TrustMeAlready,建议版本1.11,下载地址github.com/ViRb3/Trust… 下载完成后传输到手机进行安装。安装完成后打开EdXposed Manager,左上角设置,打开模块界面,确认TrustMeAlready启用,重启手机。
没有Root的手机,在Magisk模块界面搜索Moves certificates模块进行安装,当然也可以自己上github下载到手机安装,作用是将用户证书移动到系统证书,重启手机。
至此,打开fiddler,对某某书APP进行抓包,抓包成功,之前抓包打开APP无网络问题解决。