如果一个软件设置用fiddler做代理,发现不成功时你会怎么办?

当软件设置Fiddler代理失败并显示"代理服务器测试失败!"时,可以通过IDA分析软件关键位置,发现是因Fiddler返回的响应头中"Connection established"与预期字符串比较时出现大小写差异。通过修改dll文件中的字符串,将established改为Established,成功解决了抓包问题。

如果是我,我会把这个软件给“砸”了。有什么问题是 一个 调试器 不能解决的?都不需要 show me the code 了,直接调试。

 

现象,想看一下某软件的网络请求,于是设置了 fiddler作为它的代理,但软件抛出“代理服务器测试失败!”

 

似乎进行不下去了,只能看一下这个软件的原理了,

IDA打开,很快就找到关键位置,这儿要判断 proxy server (fiddler) 返回的 response header 是否包含字符串"Connection established"

 

再看看 fiddler 返回的header 

好家伙,就一个 大写 E 的不同,导致字符串判断 为不相等。

只能改一下 二进制文件了,

vim 打开这个 dll,搜索到字符串,把 established 改为 Established,保存。

 

再次运行这个软件

 

再看fiddler 也可以抓包了

### Fiddler 抓包一个手机上的两个应用中只有一个能被抓取的原因分析 在使用 Fiddler 抓包,如果发现一个手机上的两个应用中只有一个能够成功被抓取,而另一个应用抓包失败,可能涉及以下几个方面的原因: #### 1. **代理设置问题** 如果手机上的两个应用使用了同的网络配置方式,可能导致其中一个应用未正确配置代理Fiddler 抓包依赖于设备的代理设置,只有通过代理发送的流量才能被 Fiddler 捕获[^1]。 - 需要确保手机已正确配置为使用 Fiddler代理(通常是电脑的 IP 地址和端口 8888)。 - 某些应用可能会忽略系统级别的代理设置,而使用自己的代理配置或直接连接到目标服务器。 #### 2. **HTTPS 抓包未启用** 如果目标应用使用 HTTPS 协议,并且 Fiddler 的 HTTPS 解密功能未正确配置,可能导致无法抓取该应用的流量。Fiddler 需要安装其根证书并启用解密 HTTPS 流量的功能。 - 检查是否已在 Fiddler 中启用“Decrypt HTTPS traffic”选项。 - 确保目标应用信任 Fiddler 的根证书。对于某些应用,可能需要手动导入 Fiddler 的证书。 #### 3. **证书固定机制** 某些应用实现了证书固定(Certificate Pinning),即只接受特定的 SSL/TLS 证书。这种情况下,即使 Fiddler 安装了根证书,也无法对这些应用进行中间人解密[^2]。 - 如果应用启用了证书固定机制,Fiddler 将无法抓取其 HTTPS 流量。 - 可以尝试通过反编译 APK 文件修改应用的证书固定逻辑,或者使用模拟器运行应用以绕过此限制。 #### 4. **HSTS 配置** 如果目标应用启用了 HSTS(HTTP Strict Transport Security),浏览器或应用会强制使用 HTTPS 连接,并拒绝任何非安全的中间人行为。这可能导致 Fiddler 无法解密流量[^2]。 - 在浏览器中可以通过 `chrome://net-internals/#hsts` 页面删除特定网站的 HSTS 记录。 - 对于移动应用,HSTS 配置通常嵌入在应用内部,可能需要通过反编译工具修改相关设置。 #### 5. **防火墙或杀毒软件干扰** 防火墙或杀毒软件可能会阻止 Fiddler 的抓包行为,尤其是当应用尝试建立 HTTPS 连接。如果目标应用的流量被防火墙拦截,则 Fiddler 无法捕获其通信数据。 - 检查手机上是否有安全软件阻止了 Fiddler代理功能。 - 尝试临关闭防火墙或杀毒软件以验证其影响。 #### 6. **应用的网络库差异** 手机上的两个应用可能使用了同的网络库实现其通信功能。某些网络库可能对代理设置、证书验证等有更严格的限制,导致无法通过 Fiddler 抓包。例如: - 使用 `OkHttp` 的应用可能更容易配置代理和证书。 - 使用原生 `URLConnection` 或其他自定义网络库的应用可能更难兼容 Fiddler代理设置。 #### 7. **流量加密方式** 某些应用可能在其内部实现了额外的流量加密机制(如加壳、混淆等),即使抓取到流量也无法解析具体内容。这种情况下,Fiddler 只能看到加密后的数据流,而无法解密实际内容。 --- ### 示例代码:检查 Fiddler 根证书是否被信任 以下是一个简单的 Python 脚本,用于检查目标设备是否信任 Fiddler 的根证书: ```python import ssl import socket from OpenSSL import SSL def check_certificate(hostname, port=443): context = ssl.create_default_context() try: with socket.create_connection((hostname, port)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: print("证书验证成功:", ssock.version()) except ssl.SSLError as e: print("证书验证失败:", e) check_certificate("example.com") ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值