• Android7.0以上系统不能抓包解决方案


    一、现象

       Client SSL handshake failed: An unknown issue occurred processing the certificate

       笔者在对项目组的一个apk进行抓包的时候,发生了不能抓包的事情,看上面的现象,是未知证书导致的。想想也是奇怪,同样的手机(华为P9,Android8.0),同样的电脑(charles所在地),只是不同的apk,为什么这个就不能抓包了呢。

     测试包链接:https://pan.baidu.com/s/1MEyP1IodqXEyDcM-bWPK3A

    提取码:5eco

     二、问题来源于原因

      遇到的问题:Android6.0 及以下系统可以抓包,而 Android7.0 及以上系统不能再抓包
      产生原因:Android7.0+ 的版本新增了证书验证,所以 app 内不再像原来一样默认信任用户的证书

    三、解决思路

      手机相同,charles相同,只是apk不一样,有可能是apk不一样,然后想到是开发框架是react native开发的,应该是里面的一些配置导致抓包不了,然后就apktool工具把两个apk包拿到各自的工程目录,具体的方法请参考:Android安全测试之应用完整性校验检测

     然后到检查两个apk的AndroidManifest.xml的配置,发现新项目不能抓包的的配置少了:android:networkSecurityConfig="@xml/network_security_config" 

     A(能抓包的AndroidManifest.xml部分值)

     B(不能抓包的AndroidManifest.xml部分值)

    四、chalres代理抓包原理

       charles抓包原理

    五、解决方案

      1、叫开发加上网络安全的配置项

    • 在 Android 工程目录的 res 底下创建一个 xml 文件夹,然后在内部创建一个名为 “network_security_config.xml” 的文件,内容如下:
    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" overridePins="true" />
                <certificates src="user" overridePins="true" />
            </trust-anchors>
        </base-config>
    </network-security-config>
    • 在 AndroidManifest 里的标签中,添加代码:
    android:networkSecurityConfig="@xml/network_security_config"

      然后叫开发同学重新编译打包,即可抓包。此种方法是最方便的,但是对于想要抓非自己项目的apk包,然后又没有网络安全配置项,还是要有其他的方案

      2、找Android6.0系统的真机或者是使用Android Studio创建Android6.0系统的模拟器

        现在市场上比较少系统这么低而且公司的测试机也没有Android6.0或以下的,并且Android Studio创建符合的模拟器也稍微繁琐下,就放弃了此种方案

      3、获取手机的root权限,重新生成抓包工具的根证书

      4、charles + VirtualXposed + JustTrustMe(此种方法最好,无需修改任何代码)

        VirtualXposed:https://github.com/android-hacker/VirtualXposed
        JustTrustMe:https://github.com/Fuzion24/JustTrustMe

    • 使用adb安装两个apk

       电脑上只有一个设备    

    adb inatall -r VirtualXposed.apk
    adb install -r JustTrustMe.apk

       电脑上有多个设备

    adb -s R3J6R19B20004228 inatall VirtualXposed.apk
    adb -s R3J6R19B20004228 install JustTrustMe.apk

       备注:-r是代表强制,-s是指定某个设备

    • 安装完成进入 VirtualXposed apk 应用,点击6个小点进入设置页面

    • 进入设置页面,点击模块管理,勾选 JustTrustMe(当然我并没有找到它,可能是我这个版本不需要在手动选择了,安装之后自动识别到了)重启之后我们重新进去设置页面,添加我们需要抓包的应用即可

    •  点击添加应用,选择需要抓包的软件安装

     

    •  确认是否有效

      回到 VirtualXposed 上滑解锁,打开我们之前安装的不能抓包的apk TT Cooking ,则发现 charles 已经成功抓取到此应用的数据包

      

     

     体现在charles的效果

    ===============================================================================

    参考博客:

    https://testerhome.com/topics/25263

    https://blog.csdn.net/ShadowySpirits/article/details/79756274

    https://www.cnblogs.com/duanminkid/p/13685383.html

    知道、想到、做到、得到
  • 相关阅读:
    SQL的增删改查
    SQL语句的分类
    创建新DB和新用户&DBeaver连接
    jQuery css() 方法:设置或返回被选元素的一个或多个样式属性
    jQuery
    jQuery
    jQuery
    jQuery
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/Durant0420/p/14930257.html
Copyright © 2020-2023  润新知