关于某些Android应用无法抓包的问题

背景

本来用fiddler抓包Android应用一直都是开开心心的,结果就在今天,应用版本更新之后,在抓包过程中,突然给我来了个“网络无法链接,请重试”。 一打开浏览器,有网络访问,那么问题就是emmm~~ 握草无情啊…

原因

其实我觉得能看到这篇文章,说明肯定是会抓包的朋友,不然的话,标题就应该改为“关于某些Android应用抓包教程”了。
直接进入主题,一般来说Android应用的开发,为了避免别有用心的人进行流量劫持、嗅探,获得通过HTTP传输的敏感信息,或者通过劫持http加入自己的推广内容,会采用https通信,那么就涉及到证书的问题Android security-config
上述背景中,我的浏览器是有网络访问的,但是我想要抓包的应用却提示我网络无法连接,并且一旦我把fiddler的代理IP关掉,我想要抓包的应用也是可以正常使用的。那么大胆的猜测一下,是不是由于我使用了,代理主机的证书,然后Android应用更新后添加了对证书的校验,导致的问题呢?

解决方案

假设我们的猜想是对。(有时间的话,可以反编译下需要抓包的Android apk,慢慢验证一下是不是因为添加了对证书的校验导致的)
我所知道的解决方案有几个,大致分为两类:

  1. 想办法让应用信任自己证书
  2. 想办法绕开Android应用的SSL pinning

第一类方案的话:要么有APP源码,通过修改代码允许其抓包https;没有源码的话就对其Android apk 解包,找到校验部分的代码修改后,重新打包。

第二类方案的话:需要手机root,手机root可以采用模拟器或者某些手机可以到官方申请解锁BL,然后root。
root后手机安装XPosed神器,然后使用插件Android-SSL-TrustKiller 或者 JustTrustMe

最后,我应该算是采用的上述第一类的方案,让应用信任代理主机的证书,由于手机已经root,就大胆的将证书放到了系统证书区域

详细步骤:
计算证书名
openssl x509 -inform der -in FiddlerRoot.cer -out FiddlerRoot.pem
openssl x509 -subject_hash_old -in FiddlerRoot.pem
算出数值,比如e5c3944b
证书文件改名
然后把原Fiddler证书FiddlerRoot.pem改名为e5c3944b.0
放到系统分区
放到/system/etc/security/cacerts/

最后运气比较好,问题解决了

题外话,模拟器可以帮我们解决很多问题。

参考文章

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值