请问各位开发大佬,是怎么实现在安卓 7.0 及以上 https 解密抓包的?

2018-12-25 13:17:59 +08:00
 2owe

背景:Android 7.0 ( API 24 )及以上,APP 默认不信任用户域的证书。

参考链接:网络安全性配置,https://developer.android.com/training/articles/security-config

那么直接信任 Charles 的证书已经不能满足要求了。

请问各位老司机,需要抓包 https 的请求,有什么最佳实践吗?

16762 次点击
所在节点    Android
21 条回复
mouyong
2018-12-25 13:19:28 +08:00
whistle
2owe
2018-12-25 13:25:31 +08:00
@mouyong #1

https://github.com/avwo/whistle/blob/master/docs/zh/questions.md

看了一下常见问题,这个应用也是通过信任证书实现的,无法解决上面的问题。
annoy1309
2018-12-25 13:32:31 +08:00
如果是自有 APP,Google 提供一个 debug 模式发布 app 的印象中,这个模式下,修改 trust-anchors 可以让 app 默认可以信任用户域
annoy1309
2018-12-25 13:34:38 +08:00
不是自有的话,xposed 吧。我记得有 JustTrustMe 一个插件
lzvezr
2018-12-25 13:49:31 +08:00
不信任用户证书好办,root 以后把证书丢到 system 里就可以了
重点是 ssl-pinning,目前除了使用 xposed 以为,没什么好方法,所以 xposed 没有支持到的 9.0 系统无效,楼上提到的插件之前在 8.1 测试无效,不知道更新适配没有

所以我的解决方法就是使用 6.0 系统,因为 ssl-pinning 涉及到很多证书验证的东西,很少自己实现的,而安卓在 7.0 才提供了原生解决方案,所以用 6.0 抓 HTTPS 轻松很多
yukiww233
2018-12-25 13:56:04 +08:00
https://juejin.im/post/5c1e370ae51d45374272696e

在 VirtualApp 里抓不用 root
yst
2018-12-25 13:59:01 +08:00
https://github.com/levyitay/AddSecurityExceptionAndroid
这个脚本可以通过 apktools 修改配置文件然后重新打包
一年前用 Nexus 6p 的时候用过,现在不知道还有用么 您可以试试
2owe
2018-12-25 14:24:39 +08:00
@yukiww233 赞啊,VirtualApp 是一个好思路,期待 http 转发——能在电脑上看,手机界面太小了。。
2owe
2018-12-25 14:26:30 +08:00
@lzvezr 用专门的测试机也是个简单易行的好办法
2owe
2018-12-25 14:29:08 +08:00
@annoy1309
有非自有 APP 的需求,比如在微信里打开页面,使用微信授权。微信自带的工具一个问题就是,有些请求可能是过快了??请求内容获取不到。
wjm2038
2018-12-25 14:33:25 +08:00
@lzvezr 求问 system 哪个文件夹是证书的
lzvezr
2018-12-25 16:15:04 +08:00
@wjm2038 /system/etc/security
ghos
2018-12-25 17:41:22 +08:00
@yukiww233 好用啊 已买专业版
momocraft
2018-12-25 17:42:51 +08:00
不验证签名的 app 可以解包-改 manifest-重签名 搞定吗?
yukiww233
2018-12-25 17:47:57 +08:00
@ghos #13 gp 余额不够,没买专业版
baymaxx
2018-12-25 19:42:55 +08:00
这个问题要看引起的原因,如果仅仅是因为不能信任用户证书引起的,其实只借助 VirtualApp 和 Charles 就能解决,
1. 首先正常配置 Charles https 抓包,包括证书安装啥的
2. 在 VA 里面配置

<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" /> <!--主要这行-->
</trust-anchors>
</base-config>

3. 然后运行 VA,然后把你要抓包的 app 在 va 里面运行,通过 Charles 就可以抓包了。
stop9125
2018-12-25 19:53:58 +08:00
模拟器,genymotion
OrangeM21
2018-12-26 05:41:25 +08:00
上模拟器阿
OrangeM21
2018-12-26 05:41:48 +08:00
用模拟器配合 wireshark
jlhde123
2018-12-26 20:16:34 +08:00
现在有些 app 都会检测是不是虚拟机,是虚拟机直接停止运行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/520791

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX