2owe
V2EX  ›  Android

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

  •  
  •   2owe · Dec 25, 2018 · 21931 views
    This topic created in 2870 days ago, the information mentioned may be changed or developed.

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

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

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

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

    21 replies  •  2018-12-27 16:29:11 +08:00
    mouyong
    mouyong
    Dec 25, 2018❤️1
    1
    whistle
    2owe
    2owe
    OP
    Dec 25, 2018
    2
    @mouyong #1

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

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

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

    在 VirtualApp 里抓不用 root
    yst
    yst
    Dec 25, 2018
    7
    https://github.com/levyitay/AddSecurityExceptionAndroid
    这个脚本可以通过 apktools 修改配置文件然后重新打包
    一年前用 Nexus 6p 的时候用过,现在不知道还有用么 您可以试试
    2owe
    2owe
    OP
    Dec 25, 2018
    8
    @yukiww233 赞啊,VirtualApp 是一个好思路,期待 http 转发——能在电脑上看,手机界面太小了。。
    2owe
    2owe
    OP
    Dec 25, 2018
    9
    @lzvezr 用专门的测试机也是个简单易行的好办法
    2owe
    2owe
    OP
    Dec 25, 2018
    10
    @annoy1309
    有非自有 APP 的需求,比如在微信里打开页面,使用微信授权。微信自带的工具一个问题就是,有些请求可能是过快了??请求内容获取不到。
    wjm2038
    wjm2038
    Dec 25, 2018 via Android
    11
    @lzvezr 求问 system 哪个文件夹是证书的
    lzvezr
    lzvezr
    Dec 25, 2018 via Android
    12
    @wjm2038 /system/etc/security
    ghos
    ghos
    Dec 25, 2018
    13
    @yukiww233 好用啊 已买专业版
    momocraft
    momocraft
    Dec 25, 2018
    14
    不验证签名的 app 可以解包-改 manifest-重签名 搞定吗?
    yukiww233
    yukiww233
    Dec 25, 2018
    15
    @ghos #13 gp 余额不够,没买专业版
    baymaxx
    baymaxx
    Dec 25, 2018
    16
    这个问题要看引起的原因,如果仅仅是因为不能信任用户证书引起的,其实只借助 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
    stop9125
    Dec 25, 2018
    17
    模拟器,genymotion
    OrangeM21
    OrangeM21
    Dec 26, 2018 via Android
    18
    上模拟器阿
    OrangeM21
    OrangeM21
    Dec 26, 2018 via Android
    19
    用模拟器配合 wireshark
    jlhde123
    jlhde123
    Dec 26, 2018
    20
    现在有些 app 都会检测是不是虚拟机,是虚拟机直接停止运行
    2owe
    2owe
    OP
    Dec 27, 2018
    21
    @jlhde123 毕竟有些大厂爬虫就是用的这种方式……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1308 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 21:40 · PVG 05:40 · LAX 13:40 · JFK 16:40
    ♥ Do have faith in what you're doing.