28 《吐血整理》高级系列教程-吃透Fiddler抓包教程-Fiddler如何抓取Android7.0以上的Https包-下篇

1.简介虽然依旧能抓到大部分Android APP的HTTP/HTTPS包 , 但是别高兴的太早 , 有的APP为了防抓包 , 还做了很多操作:① 二次加密有的APP , 在涉及到关键数据通信时 , 会将正文二次加密后才通过HTTPS发送 , 我们抓包抓到的是一堆二进制base64② 自带HTTP Client像支付宝那样的变态 , 自己带了一个基于so的HTTP Client库 , 对于关键数据 , 都不走URLConnection和OkHttp , 而是走自己的HTTP Client库 , 甚至一些WebView页面的渲染 , 都是先用自带的HTTP Client请求得到json数据 , 然后填到HTML模板里面 , 再在WebView里渲染出来 。③ SSL/TLS Pinning , APP自带服务端证书 , 除了自带证书什么都不信
apk在开发时就将服务端证书一块打包到客户端里 。这样在HTTPS建立时与服务端返回的证书比对一致性 , 进而识别出中间人攻击后直接在客户端侧中止连接 。
解决原理:
客户端不是会做两个证书间的一次性校验吗 , 那么就通过hook的方式将此次校验的结果返回true或者干脆不让其做校验 。当然这种做法只能在越狱环境下实现 , 但对于抓包来说 , 这已经足够了 。
2.方案一方案一:Xposed+JustTrustMe+Android模拟器(安卓手机需要Root , 该方法有手机变砖风险 , 建议在模拟器下操作) 。
大名鼎鼎得Xposed , 是Android平台上最负盛名的一个框架 。在这个框架下 , 我们可以加载很多插件App , 这些插件App可以直接或间接操纵系统层面的东西 , 比如操纵一些本来只对系统厂商才open的功能(实际上是因为Android系统很多API是不公开的 , 而第三方APP又没有权限) 。有了Xposed后 , 理论上我们的插件APP可以hook到系统任意一个Java进程(zygote , systemserver , systemui) 。
功能太强大 , 自然也有缺点 。Xposed不仅仅是一个插件加载功能 , 而是它从根上Hook了Android Java虚拟机 , 所以它需要root , 所以每次为它启用新插件APP都需要重新启动 。而如果仅是一个插件加载模块的话 , 当前有很多开源的插件加载模块 , 就没这么复杂了 。
Xposed框架以在不修改APK文件的情况下修改程序的运行 。
这套框架需要设备解锁了Bootloader方可安装使用[1](root为解锁Bootloader的充分不必要条件 , 而xposed安装仅需通过TWRP等第三方Recovery卡刷安装包而不需要设备拥有完整的root权限) 。
(1) xposed 是啥?xposed是一个框架 , 上面有很多模块 , 这些模块都依赖于xposed这个框架 , 之所以称xposed是第一神器 , 就是因为这些模块可以完成许多匪夷所思的功能 , 例如:修改微信的界面 , 自动抢红包模块 , 自定义程序的文本 , 防止微信消息撤回 , 防止BAT三大流氓的全家桶相互唤醒、连锁启动 , 锁屏后自动干掉APP防止后台运行耗电 , 还有很多修改App或手机数据的装B模块等等 。
(2) xposed 的原理?xposed 原理就是修改系统的关键文件 , 然后当APP调用系统API时 , 首先经过xposed , 而这些基于xposed的模块就可以选择性的在App调用这些api的时候干一些”坏坏”的事情 , 或者修改返回的结果 , 这样app在运行的时候效果就会改变 , 但app本身并没有被破坏 , 只是调用系统api的时候 , Android系统的表现发生了变化 , 这就是钩子 , 专业术语hook 。所以 , 说白了 , xposed就是个强大的钩子框架 。

经验总结扩展阅读