以前微信是可以直接信任用户证书,然后使用抓包软件例如 Fiddler、Mitmproxy 来查看分析小程序网络请求的。

可是自从某个版本以后,这个特性被限制了,十分不利于网络分析调试,从网友反馈的情况看:

  • 安卓系统
    • 安卓系统7.0及以下【不影响】
    • 安卓系统7.0以上
      • 微信7.0以下版本【不影响】
      • 微信7.0及以上版本【无法抓包】
  • 苹果系统【不影响】

可见在满足三个条件,安卓,安卓版本大于7.0,微信版本大于等于7.0,是无法抓包的,微信APP去掉了信任用户证书的配置。技术上的实现可能是通过 android:networkSecurityConfig 所谓的ssl pinning技术。

此时对于高版本的安卓用户有以下几种解决方案:

1. 使用微信版本 6.7.3

这个是最简单的

2. 使用 VirtualXposed

这个软件不需要Root权限,不会修改系统属性。相当于自己的虚拟空间,本来是微信的进程空间,现在放在自己的进程空间运行了,所以可以修改应用的进程运行环境。具体使用介绍参考:

然后继续安装一个 JustTrustMe 模块,禁止证书校验。

通过以上两步,可以完美的实现安卓高版本的抓包。

3. Root

这个操作难度稍微有点大,视手机而定。现在比较流行的是 Xposed 框架。

以上提供了几种方案,对于第二种、第三种使用 VirtualXposed、Xposed 其实是有一些风险的,Android 手机装插件有可能微信被封号?一篇文章告诉你来龙去脉 这篇文章给出了比较全面的分析,
以下行为都是可能被检测出来的:

  • 平时微信会封禁的账户类型(诈骗,色情营销,吸粉账号等)
  • 手机上安装了 Xposed 框架并激活了修改微信相关模块的用户
  • 在手机上安装了 Magisk 框架并且激活了 Systemless Xposed 的用户
  • 只在手机上安装了 Xposed 或 Magisk 框架但没有激活的用户
  • 一部分只 ROOT 手机的用户(存疑)和使用越狱后 iOS 的用户。
  • 使用手机自带/第三方的微信分身功能同时使用多个微信账户。
  • 少部分什么都没装无辜躺枪的 Play 商店版微信用户(一脸懵逼)

这里的分析其实衍生了第四种方法,可能风险比较小的?

4. VirtualXposed + Google Play 版本的微信 + JustTrustMe

原因是:

Play 商店拥有更加严格的审核标准,像是扫描用户应用列表和调用栈检测的代码会通不过商店的审核,使用 Play 商店版微信会更有安全保证
这种方案综合来看是比较好的。

可见微信对于安全性的投入力度之大,不过我们掌握了这些规律后,此后也会游刃有余。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。