一、写在前面

目的:

实现对安卓应用的抓包,主要讲述Android 7.0+,因为大多新生app不再支持sdk6.0以下,而安卓11(10)的抓包在不装有 Magisk 等繁琐的操作下难以实现(后文再聊),所以选用安卓7的设备,目前还能满足绝大多数需求,(虽然不知道以后会怎么样),所以在此文中会一并给出安卓5.0和安卓11的抓包思路。

探寻过程中读到一篇文章,对计算机网络的知识讲解的十分透彻,覆盖https通信过程以及安卓底层代码的实现原理,文章很长但确实给了我很大的帮助,希望有兴趣的同学也能读一读。

附上链接:legalwyy的法学笔记跨越Android 11监听https数据包的三道难关


二、 不同安卓版本抓包所遇到的困难

  • Android5.0:无困难,网上的教程一大堆,但是app陆续不再支持。
  • Android7.0以上:不再信任用户证书,需要将放到根目录。并且设置中修改代理后,app有权限不走系统代理。(这一点网上的文章都没有提及,导致我们往往在最后一步出问题)。
  • Android10:引入的动态分区阻止用户将system分区挂载为可读写,无法将证书放入根目录。
  • Android11:同上,而且越来越难抓。

为什么要将安卓10 和11 分开呢,可能是因为国产厂商深度定制的问题,用Httpcanary(黄鸟)等手机抓包app依然能对其导入的用户证书添加信任,也就是说你的手机是安卓10及以下或许仍然能用抓包app进行简单抓包。对了,还有华为的HarmonyOS截止文章发布前也可以添加信任。(可能也有些玄学的因素吧,但确实是抓到了。)

而安卓11更差不多凉凉了,必须root设备+Magisk+Trustme插件(hook),此处先按下不表,最后再说。


三、软件厂商反抓包的措施

除了上面遇到的系统性的困难,各类软件厂商还想出了一些反抓包措施,又给我们增添了超级多的困难。

1.客户端内置根证书

2020年前后吧,各大软件厂商都纷纷更进先进检测手段,以至于现在大厂app都将自己的证书内置在了手机软件里,在建立链接传输数据前先检测接收到的证书是否与内置根证书一致,否则直接中断链接。

这确实恶心,但是否有解决的办法呢?

答案是肯定的的,但我们也不得不root手机,然后装上Xposed框架(或者Magisk),再安装JustTrustMe一类的插件,才能勉强解决。

JustTrustMe原理:

基于一种Hook技术(钩子),App检测ssl证书与内置根证书是否一致时,此插件将app中检测证书的api钩住,不管一致与否,直接强行通过。类似于忽略ssl证书错误。

其中的坑:

JustTrustMe只能识别未被混淆的变量名称,一旦厂商做了混淆(这很容易),我们就比较难识别,也就Hook不出来了。
还好有大佬对插件做了更新,并在GitHub上开源,叫TrustMe++,使其也能识别混淆的变量。

但这并不是长久之计,但我们目前也就只能这样了,早晚有一天这条路会被堵死(悲伤)。

2.服务器端检测(究极恶心且无解)

我们以为客户端验证就结束了吗?不,为数不多的厂商为了保证通信绝对绝对绝对的安全,会在服务器端再次检测客户端证书是否一致,这就保证了用户不可能进行篡改,一旦证书检测未通过,服务器端会主动断开连接。。。
我的天呢,这,这,这,真的心累了。

我们看似是我们手机的主人,却发现系统在防着我们,app在防着我们,甚至远在云端的后台也在防着我们。

有解吗?
可能有吧,要具体的看厂商采用的验证措施了,这意味着你要进行一次超级彻底的安卓逆向工程,反编译、反混淆脱壳,去签名验证、巴拉巴拉等等等等等,最后找到加密验证的源代码,然后一顿分析,试图发现证书秘钥或绕过加密。。。
看来这次是真的无解了。
不过现在用这条路的app比较少,但如果互联网环境继续恶化下去的话,mabye…

四、小结

讲了半天了,总要给个方案吧?
所以,我最后决定采用:

  • 雷电4.0X的模拟器
  • 安卓7.1.2的镜像
  • ProxyDroid代理软件
  • 派大星版Xposed框架
  • Trustme++插件
  • Fildder抓包工具

解释:

  • 我怕还是有人看不懂,Xposed框架、ProxyDroid、Trustme++,是3个手机软件,需要你装到模拟器里面的。
  • 模拟器我换了好几个,最后还是用了雷电模拟器,但我不建议你去官网下,广告太他妈多了。
  • 安卓镜像我也不建议用官方的,最好用别人精简好的。找不到的话可以联系我,我给你发。
  • ProxyDroid是个代理app,因为安卓7.0 设置了wifi代理后,应用可以选择绕过系统代理。这个地方巨坑,巨坑,巨坑,而且网上没人说。
  • Xposed框架需要自己装,但是国外服务器连不上,我就用的国内兄弟自己做的镜像app。
  • Trustme++找不到的话联系我,我给你发。

贴个链接:派大星版Xposed安装教程

五、安装步骤:

1.安装雷电模拟器,安装Xposed框架

重启后激活完成

2.安装ProxyDroid和Trustme++

把这两个安装包拖进来即可

3.打开ProxyDroid设置代理

类型选择http即可。

4.fiddler查看

访问一下百度,不出意外的话,已经抓到了。
http和https的都能抓到。

六、疑难解答:

  1. Xposed框架安装可能会失败,看一下你的镜像是不是X86的。还有我用的派大星版,这个是作者改了国内下载地址的,如果你从GitHub上下载的Xposed,因为有墙的原因,不会显示安装。
    看看这个链接:派大星版Xposed安装教程

  2. Trustme++插件安装后需要重启激活,然后你用了这个东西是不需要安装fiddler证书的。直接就能忽略ssl证书错误,如果你还是抓不到的话,也可以安装fiddler证书试试。

七、安卓5和安卓11思路:

写不出来了,等我以后一定填坑。

本篇(暂时)完结。

3.#技术|Android抓包的原理分析和实际操作,fiddler+Xposed+TrustMe++相关推荐

  1. Android逆向之旅---爆破一款资讯类应用「最右」防抓包策略原理分析

    一.逆向分析 首先感谢王同学提供的样本,因为王同学那天找到我咨询我说有一个应用Fiddler抓包失败,其实对于这类问题,我一般都会这么回答:第一你是否安装Fiddler证书了,他说他安装了.第二你是否 ...

  2. 魔兽抓包——BattleLAN原理分析

    冰封抓包结果如下: 1>开游戏,点"局域网"发出消息: 172.16.28.16-->255.255.255.255  udp LEN=udp 24B      端口: ...

  3. 前端人必须掌握的抓包技能(原理到实践)

    https://juejin.cn/post/7140040425129115684 作者:jecyu 1. 前言 时隔 3 年,重新接触了移动端 h5 页面开发,上一次还是大四实习.这一次是 hyb ...

  4. Android抓包方法(一)之Fiddler代理

    做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 具体步骤如下: 1.抓包原理 Fiddler是类似代理服务器的形式工作,它能够记录所有 ...

  5. Android抓包方法(二) 之Tcpdump命令+Wireshark

    前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分析是测试人员必备的功课之一.最先想的基本上都会是Fiddler代理抓包, ...

  6. Android抓包方法(一) 之Fiddler代理

    前言: 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 不管是之前做HTML5手机项目测试,还是现在的企邮app测试,经常需要抓包,做 ...

  7. Android抓包指南①: 使用Fiddler抓HTTP/HTTPS包

    抓包的重要性 网络抓包,是Android应用逆向分析的重中之重,很多时候我们拿到一个APP,不知道从何入手分析,往往是从抓包开始,先弄清楚他与服务器通信的内容,如果一目了然,我们完全可以照搬,自行写一 ...

  8. Android抓包方法之Win7笔记本Wifi热点+WireShark工具

    Android抓包方法 之Win7笔记本Wifi热点+WireShark工具 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 第 ...

  9. Android抓包指南: 使用Fiddler抓HTTP/HTTPS包

    本文由encoderlee发表于CSDN博客:https://blog.csdn.net/CharlesSimonyi/article/details/90493122 抓包的重要性 网络抓包,是An ...

  10. Android抓包方法(三) 之Win7笔记本Wifi热点+WireShark工具

    前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 第一篇介绍Fiddler代理,如果APP不支持代理,则不适用:第二篇介绍的Tcp ...

最新文章

  1. CSS截取字符串,兼容浏览器
  2. ieee期刊_论文绘图神器来了:哈佛博士后开源,一行代码绘制不同期刊格式图表...
  3. leetcode-551-Student Attendance Record I(判断是否出现连续几个相同字符)
  4. ado.net 操作mysql_ADO.NET操作数据库(一)
  5. mvn本地库导入jar包
  6. 计算机在言语康复的应用,实物交互在言语康复训练中的应用.pdf
  7. PeopleTools 8.54 first install note
  8. string 与stringbuilder的区别
  9. Dubbo即将毕业,晋升为Apache顶级项目?
  10. VSS 2005,项目解决方案重新签入管理的方法
  11. 国外游戏开发公司10强
  12. 通过这些快捷键解决YouTube的“空格键问题”
  13. 大学生找工作如何做自我介绍?如何做好自我介绍?
  14. 直播系统开发:宋祖儿直播自曝“抠脚妹”
  15. volatility 基本用法
  16. 推荐|微信朋友圈营销的新尝试
  17. Android中TextView中的.setText和.append的区别
  18. python : 新概念英语 课文转为html
  19. Protobuf 了解
  20. postgresql等待锁排查——ShareLock ExclusiveLock

热门文章

  1. android剪贴板清空,如何访问和清除Android手机上的剪贴板
  2. C++ Test的使用
  3. 生物信息学:根据PDB名称、爬虫PDB数据库的信息、保存到Excel里
  4. 线性代数与空间解析几何重要知识点笔记
  5. stata 导出 相关系数表_STATA数据处理技巧与计量分析二|基本语句介绍
  6. 文献翻译——基于关联规则挖掘识别的鸡源大肠杆菌共有多重耐药模式(上)
  7. java参数配置jconsole_jconsole 配置详解
  8. 彻底凉了!全球最大电子书网站遭美政府封站
  9. 安装jdk的时候为什么会有两个jre文件
  10. 二、正确看待博弈论和经典理论的理论定位