我正在尝试捕获应用程序在运行时执行的 https 请求,但尚未成功。不同的失败方法,使用 mitmproxy / charles 代理和用户 ca 证书,获取 smali 代码以绕过 x509Certificate 检查,将 ca cert 安装为系统以避免证书固定,使用不同的 xposed 应用程序(过时,仍然值得一试),让我想知道我错过了什么。只能捕获chrome的https流量,其他应用拒绝加载/连接。公平地说,有人可能会问为什么我不弄清楚请求的构建位置并记录所有需要的信息。就个人而言,我认为捕获所述流量的工作方法可以节省大量时间和工作。
# virtual methods
.method public checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
.locals 1
return-void #!!
iget-object v0, p0, La/a/a/a/e/d/d$a;->a:Ljavax/net/ssl/X509TrustManager;
invoke-interface {v0, p1, p2}, Ljavax/net/ssl/X509TrustManager;->checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
return-void
.end method
.method public checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
.locals 1
return-void #!!
iget-object v0, p0, La/a/a/a/e/d/d$a;->b:La/a/a/a/e/d/i;
invoke-interface {v0, p1, p2}, La/a/a/a/e/d/i;->a([Ljava/security/cert/X509Certificate;Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_0
iget-object v0, p0, La/a/a/a/e/d/d$a;->a:Ljavax/net/ssl/X509TrustManager;
invoke-interface {v0, p1, p2}, Ljavax/net/ssl/X509TrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
:cond_0
return-void
.end method
.method public getAcceptedIssuers()[Ljava/security/cert/X509Certificate;
.locals 1
return-void #!!
iget-object v0, p0, La/a/a/a/e/d/d$a;->a:Ljavax/net/ssl/X509TrustManager;
invoke-interface {v0}, Ljavax/net/ssl/X509TrustManager;->getAcceptedIssuers()[Ljava/security/cert/X509Certificate;
move-result-object v0
return-object v0
.end method
如果您成功捕获流量(尤其是 https),请告诉我您的程序以实现问题的要求。