一、背景
Android 7.0 之后增加了对第三方证书的限制,抓包工具(charles、fiddler等)提供的证书都无法通过校验,也就无法抓取HTTPS请求了,对测试工作影响很大。
最近更新的微信 7.0 也增加了第三方证书校验,导致无法正常抓包。
解决该问题一般有三个思路:
- 让开发打一个测试包,关闭对证书的校验。
- 将设备root,将证书安装到system分区。
- 将设备root,利用Xposed框架,利用justTrustme/SSL-killer等模块绕过第三方ssl的校验
以上三个思路虽然可行,但都比较复杂,配置成本比较高。有没有更简单的方法呢?
当然是有的。
这个方法仍然是利用思路3,不过利用virtualXposed工具,能够省去root的过程,安装两个软件即可搞定。
二、virtualXposed简介
经常折腾 Android 刷机 的同学应该都知道Xposed这个神级hook框架的存在。借助该框架以及开源插件,能够在不修改apk的情况下影响程序的运行。简而言之,借助Xposed框架和该框架之上的插件,能让app的功能强大十倍!
最常见的插件比如:
微信自动抢红包、消息防撤回、自定义界面、自动回复、消息屏蔽。。
抖音自动关注点赞,下载视频。。
修改系统界面、修改步数、虚拟定位。。
。。。
JustTrustme 就是其中一个插件,用于绕过 ssl 证书检查,借助它可以实现对 https 的抓包。类似的插件还有 SSLkiller、sslunpinning 等。
当然,这么强大的工具也有其缺点。最大的问题还是安装过程和系统兼容性。
- Xposed 安装需要root。如今root本身就是一件比较麻烦的事。。
- 国产手机厂商最热衷定制rom,导致Xposed存在很大的兼容性问题,一不小心就容易让手机变砖。。
- 微信 检测到相关插件后,会有封号风险。。
为了解决以上问题,国内一位大神借助 VirtualApp 实现了Xposed的一种免root方案 VirtualXposed。
简单来说就是,VirtualXposed 制作了一个虚拟环境(可以理解为虚拟机),该虚拟环境中内置Xposed环境,用户只需将软件安装到该虚拟环境中,就能使用xposed的功能了。
详细使用参考官方说明:无需Root使用 Android 最强大的 Xposed 框
三、工具准备
- virtualXposed.apk
- justTrustme.apk 或 SSLkiller.apk 或 sslunpinning.apk
工具下载:
链接: https://share.weiyun.com/5T0MOuV (密码:EbVV)
四、使用方法
先阅读官方说明:https://mp.weixin.qq.com/s/8bpyIjRS21NGseq1DFQmQQ
以Justtrustme.apk为例,SSLkiller.apk 和 sslunpinning.apk类似。
- 安装 virtualXposed.apk 和 justTrustme.apk 模块。
- 启动virtualXposed,安照提示赋予相应的权限。
- 在主界面点击菜单按钮,选择"添加应用"
- 在添加应用列表选择 "justTrustme" 和 需要抓包测试的App(比如微信、微博),并安装
- 在 virtualXposed 中打开 xposed 应用。点击左上角菜单按钮,切换到模块。此时会看到 "justTrustme" 选项。
- 在 "justTrustme" 选项后打钩,并按照提示,返回菜单界面重启virtualXposed
- done!
完成以上设置后,virtualXposed 中的 https 应用都能直接抓包,不会再提示证书无效了。