欢迎光临
我们一直在努力

新版微信7.0无法使用fiddler无法抓取https请求?

安卓下微信升级到7.0以后无法使用fiddler进行抓包。这是关于微信的一些说明:

  • 安卓系统 7.0 以下版本,不管微信任意版本,都会信任系统提供的证书
  • 安卓系统 7.0 以上版本,微信 7.0 以下版本,微信会信任系统提供的证书
  • 安卓系统 7.0 以上版本,微信 7.0 以上版本,微信只信任它自己配置的证书列表

那应该怎么解决呢?

解决方法一:

第一步: 点击圆形微信图标拖入右上角
第二步: 打开应用市场,找到设置,关闭 WLAN闲时自动更新
第三步: 浏览器搜索微信6.7.3版本,下载并安装
第四步: 打开微信,找到设置~通用~自动下载微信安装包,选择”从不”

除了上述方法就没有其他方法了么?

Google一下,很多类似的帖子,问题的根源是:

在Android7.0及以上的系统中,每个应用可以定义自己的可信CA集集。

默认情况下,应用只会信任系统预装的CA证书,而不会信任用户安装的CA证书

而回想我们抓包的过程,无论是fiddler还是Charles,想抓https,都必须手机安装对应的证书,通过fiddler/Charles安装的证书恰恰正属于用户安装的CA证书,因此会被视作不安全的证书。

解决方案二:修改APP配置文件

如上代码提交的那样,直接修改APP的android:networkSecurityConfig属性,前提是可以获取到APP的源码。

在AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config"
    ... >
    ...
    </application>
</manifest>

配置文件:res/xml/network_security_config.xml

<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" overridePins="true" /> <!--信任系统证书-->
            <certificates src="user" overridePins="true" /> <!--信任用户证书-->
        </trust-anchors>
    </base-config>
</network-security-config>

然后重新打包抓包就可以了;

这种做法,除了在源码上修改,还有其他法子吗?

肯定的,如下:

先脱壳,也可以直接下载wdj的包,然后用apktool反编译apktool,就能看到包内容了,修改AndroidManifest.xml,同时新增network-security-config,修改完以后重新签名打包就可以;

解决方案三:将证书安装到系统证书中(需要root)

如果没有源码权限,怎么办?那就把证书安装到系统证书里面,但是这个操作需要root权限

系统证书的目录是:/system/etc/security/cacerts/

每个证书的命名规则为:<Certificate_Hash>.<Number>

Certificate_Hash表示证书文件的hash值,Number是为了防止证书文件的hash值一致而增加的后缀;

证书的hash值可以由命令计算出来,在终端输入openssl x509 -subject_hash_old -in <Certificate_File>,其中Certificate_File为证书路径,将证书重命名为hash.0放入系统证书目录,之后你就可以正常抓包了。

赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » 新版微信7.0无法使用fiddler无法抓取https请求?

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址