1.简介

通过前边和宏哥的学习,我们了解到Android 7.0 之后增加了对第三方证书的限制,抓包工具(charles、fiddler等)提供的证书都无法通过校验,也就无法抓取HTTPS请求了,对测试工作影响很大。

最近更新的微信 7.0 也增加了第三方证书校验,导致无法正常抓包。

2.解决思路

解决该问题一般有三个思路:

  1. 让开发打一个测试包,关闭对证书的校验。
  2. 将设备root,将证书安装到system分区。
  3. 将设备root,利用Xposed框架,利用justTrustme/SSL-killer等模块绕过第三方ssl的校验

以上三个思路虽然可行,但都比较复杂,配置成本比较高。有没有更简单的方法呢?

当然是有的。

这个方法仍然是利用思路3,不过利用virtualXposed工具,能够省去root的过程,安装两个软件即可搞定。

3.virtualXposed简介

经常折腾 Android 刷机 的同学应该都知道Xposed这个神级hook框架的存在。借助该框架以及开源插件,能够在不修改apk的情况下影响程序的运行。简而言之,借助Xposed框架和该框架之上的插件,能让app的功能强大十倍!

最常见的插件比如:

微信自动抢红包、消息防撤回、自定义界面、自动回复、消息屏蔽。。

抖音自动关注点赞,下载视频。。

修改系统界面、修改步数、虚拟定位。。

。。。

JustTrustme 就是其中一个插件,用于绕过 ssl 证书检查,借助它可以实现对 https 的抓包。类似的插件还有 SSLkiller、sslunpinning 等。

当然,这么强大的工具也有其缺点。最大的问题还是安装过程和系统兼容性。

  1. Xposed 安装需要root。如今root本身就是一件比较麻烦的事。。
  2. 国产手机厂商最热衷定制rom,导致Xposed存在很大的兼容性问题,一不小心就容易让手机变砖。。
  3. 微信 检测到相关插件后,会有封号风险。。

为了解决以上问题,国内一位大神借助 VirtualApp 实现了Xposed的一种免root方案 VirtualXposed

简单来说就是,VirtualXposed 制作了一个虚拟环境(可以理解为虚拟机),该虚拟环境中内置Xposed环境,用户只需将软件安装到该虚拟环境中,就能使用xposed的功能了。

4.工具准备

  • virtualXposed.apk
  • justTrustme.apk 或 SSLkiller.apk 或 sslunpinning.apk

工具下载:
关注“北京宏哥”公众号,发送“小程序”获取安装包下载地址。

5.使用方法

这个详细步骤前边的文章中宏哥也介绍和分享过,自己看前边文章即可,这里宏哥就一笔带过。

先阅读官方说明:

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

以Justtrustme.apk为例,SSLkiller.apk 和 sslunpinning.apk类似。

  1. 安装 virtualXposed.apk 和 justTrustme.apk 模块。
  2. 启动virtualXposed,安照提示赋予相应的权限。
  3. 在主界面点击菜单按钮,选择"添加应用"
  4. 在添加应用列表选择 "justTrustme" 和 需要抓包测试的App(比如微信、微博),并安装
  5. 在 virtualXposed 中打开 xposed 应用。点击左上角菜单按钮,切换到模块。此时会看到 "justTrustme" 选项。
  6. 在 "justTrustme" 选项后打钩,并按照提示,返回菜单界面重启virtualXposed
  7. done!

完成以上设置后,virtualXposed 中的 https 应用都能直接抓包,不会再提示证书无效了。

6.小结

目前的 VirtualXposed 还不甚完善。它尚未支持需要使用资源 Hook 的模块,对一部分模块的兼容性也尚待增强。

同时,它的工作原理,也决定了任何修改系统的 Xposed 模块均无法使用;但瑕不掩瑜,VirtualXposed 的确是个很有前途的项目。它大大降低了 Xposed 框架的使用门槛,让更多人能体验到各种花样百出的模块。

对于已经在系统中启用了 Xposed 的用户,还可以借助 VirtualXposed 方便地测试模块;既不用频繁重启手机,又毋需担心「翻车」后影响正常使用。

希望作者能进一步地完善这个项目,提升兼容性与稳定性,造福更多 Android 玩家。

想要了解更多详情,可以访问 VirtualXposed 的 GitHub 页面。

最新文章

  1. 常用的Meta标签写法和作用
  2. Python读写excel
  3. struts2 action配置时 method 省略不写 默认执行方法是父类ActionSuppot中的execute()方法
  4. 查看mysql语句运行时间
  5. Eclipse 快捷键 自动生成get/set注释(转)
  6. 【jQuery 区别】.click()和$(document).on("click","指定的元素",function(){});的区别
  7. php 今天 昨天 明天 时间戳
  8. 详解WPF Blend工具中的复合路径功能 ( 含路径标记语法 )
  9. ZOJ 1004 Anagrams by Stack(DFS+数据结构)
  10. Java-Android 之单选按钮的运用
  11. javascript预编译
  12. js实现二叉树
  13. PL/SQL Developer 导入导出操作
  14. Dynamics CRM 2011 仪表盘(dashbord)中加入公告(announcement)模块
  15. 学习ASP.NET Core Razor 编程系列十八——并发解决方案
  16. golang 如何将imagemagick 和golang 打包到docker 环境中
  17. day 57 jQuery插件
  18. 大杂烩 -- ArrayList的动态增长 源码分析
  19. zope.interface 库学习一
  20. SQL Server双机热备之后项目的FailOver自动连接

热门文章

  1. Windows Server体验之SSH远程连接
  2. C++程序的内存分布
  3. Django manage.py 命令详解
  4. git pull提示如下信息时候的操作
  5. vivo 公司 Kubernetes 集群 Ingress 网关实践
  6. 最佳实践:4个黄金指标和USE方法
  7. MySQL手动恢复数据库测试操作
  8. C++自学笔记 初始化列表 Initializer list
  9. Tubian-Win上线!Tubian官方的Windows软件适配项目
  10. siteServer CMS知识点