V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
2owe
V2EX  ›  Android

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

  •  
  •   2owe · Dec 25, 2018 · 20973 views
    This topic created in 2682 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
        1
    mouyong  
       Dec 25, 2018   ❤️ 1
    whistle
    2owe
        2
    2owe  
    OP
       Dec 25, 2018
    @mouyong #1

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

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

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

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