声明:本文仅供学习沟通用途,切勿用于非法行为,不然由此产生的一切后果均与作者自己无关。未经授权制止转载本文。如有侵权,请及时经过自己大众号「逆向扬」联络删除。

问题描绘

刚开端学习安卓逆向的小同伴肯定都刻不容缓得预备了一台真机想要试一下抓包。

给手机刷完 root 后,依照网上的教程给手机装置了 Fiddler 的证书,对于一些简略的 demo 安卓使用,确实可以抓到 https 的包。

可是事情并没有那么顺畅。假如你是安卓 7 或许更高版别的话,当你换了其他 app 时,可能会发现抓不到它们的 https 包。

我便是遇到了这种状况。所以上网查阅材料(主张咱们先读一下这篇博客),了解到是由于安卓体系从 7 版别开端晋级了安全策略,一些 app 不认你装置的 Fiddler 证书。要处理这个问题,咱们需求将 Fiddler 的证书刷入到手机的“体系证书”中才干正常抓到 https 包。

在将 Fiddler 证书刷入我手机“体系证书”的进程中不是很顺畅,前后花了一个礼拜时间、查了不少博客才成功刷进去,期间也踩了些坑。

为了记载,也为了咱们遇到这个问题时可以有一个有效的参阅材料,就有了这篇博客。

假如咱们觉得有协助的话,可以点个赞加个关注,或许私信我沟通,感谢咱们的支撑。

下面进入正文。

手机类型装备

我这台用来玩逆向的手机装备如下:

  • 手机类型是红米 Note 9 5G 版,从二手网站淘来的,95 新
  • 操作体系用的是 miui 12.0.9 版别,安卓 10 体系

处理方案

我把我成功刷入 Fiddler 证书到体系证书的整个进程都总结在这儿,包含刚拿到手机后怎样 root 的,咱们可以参阅着依照自己的实际机型来操作。

刷 root

在拿到淘来的安卓机后,先是给手机刷 root。其时我看的是这个教程。依照这个教程刷完 root 后,还需求装置两个 magisk 的模块:RiruLSPosed,但由于下载的是 magisk 25.2 版别,由于一些原因,这个版别的 magisk 现已去掉模块在线下载这个功用了,因而我就从这两个模块的官方 github 仓库里下载,然后本地装置了下。

假如不知道怎样本地装置,咱们可以查一下相关博客,或许私信找我也行。

刷完 root,装置完两个模块后,Magisk 界面如下图。需求留意的是,下面图二中模块仓库中的 ADB Root 这个模块在后面很重要,后面我会告知咱们怎样装置,在这儿咱们留意一下这个模块就行:

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案
安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

将 Fiddler 证书刷入手机的体系证书

刷完 root 今后,咱们就要开端将 Fiddler 证书刷入到体系证书中了。

到这一步,咱们需求了解下 adb 这个工具。网上关于 adb 的运用教程很多,我就不介绍了。假如有需求引荐教程的小同伴可以翻一下文章最下面参阅材料末节中 adb 相关的材料。

下面开端解说具体步骤。

第一步

从 Fiddler 下载 Fiddler 证书到电脑本地,并用 openssl 转化。这一步可以参阅这篇博客的导出 FD 证书末节和用 openssl 转化证书的末节,我就不介绍了。

第二步

手机衔接电脑,预备刷入证书。

首先打开终端运转:

adb devices

查看 adb 是否能辨认到你的手机,

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

假如手机衔接了电脑,可是用这个指令显现没有辨认到任何设备的话,记住承认一下手机开发者选项中的 USB 调试功用有没有打开,想要开启这个选项 adb 才干辨认到你的设备。

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

可以成功辨认到后,咱们运转下面的指令,将电脑上转化好的证书推送到手机体系证书目录下:

adb push [文件名] /system/etc/security/cacerts

留意:文件名这个位置记住用转化后的证书文件的绝对路径。

但我这边其时报了这个错:Read-only file system

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

粗心是无法在只读文件体系中创立文件,说白了便是没有写权限。

遇到这个问题,咱们运转这篇 Stack Overflow 的回答中说到的指令从头挂载下:

adb shell mount -o rw,remount /

在这之前记住在 magisk 中允许给予 adb shell 工具运用 root 权限,也便是打开下面的[SharedUID] Shell 选项:

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

可是,假如要成功运转这个指令,你必需求确保让 adb 以 root 运转,也便是先履行下面的这个指令,不然会无法履行成功:

adb root

我其时履行这个指令时,报如下错:adb cannot run as root in production builds

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

这个问题其时卡了我一段时间,其时查博客,一些博客说是要装置一个叫 adb-insecure 的 magisk 模块,其时我也装过,但由于这个模块只适用于一些老版别的安卓,因而也没成功。

还有一些博客说可以经过装置一个叫 MagiskHidePropsConf 的 magisk 模块,修正 ro.debuggable 和 ro.secure 的值来处理这个问题,但也没什么用,成果还由于修正了 ro.secure 的值导致无法进入手机的开发者选项,不得不把手机体系重刷。

那最终我是怎样处理的呢,便是这篇 Stack Overflow 上的回答。里边说到了一个 magisk 模块,名叫 ADB Root,也便是上文我提醒咱们留意的那个模块。这个模块便是暂时让手机上的 adbd 进程以 root 方法启动:

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

装置这个模块今后,重启手机,再次在终端输入:

adb root

可以看到 adb 现已进入 root:

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

然后运转下面指令就可以履行成功:

adb shell mount -o rw,remount /

不明白这句指令在做什么的同伴们,来看看 ChatGPT 的解释:

“这句 adb 指令的作用是将 Android 设备的根文件体系以读写方法从头挂载。其中,adb shell 表明在设备的指令行终端中履行后续指令;mount 是 Linux 体系中的一个指令,用于挂载文件体系;-o rw,remount 表明将原本以只读方法挂载的文件体系从头挂载为可读写的方法;/ 表明需求从头挂载的文件体系目录,这儿指的是根文件体系。”

该指令一般用于需求修正体系文件或许进行体系级操作的状况,由于 Android 设备默许状况下会将根文件体系挂载为只读的方法来保护体系的安全和稳定性。经过从头挂载为读写方法,就可以对其进行修正和操作。可是需求留意的是,修正体系文件可能会导致设备出现问题或不可逆转的风险,请谨慎操作并备份重要数据。

之后咱们继续 push 咱们的证书:

adb push [文件名] /system/etc/security/cacerts

假如显现下面这个成果的话,阐明刷入成功了:

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

但可能会遇到这样一个问题:No space left on device

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

这个问题是说咱们要刷入证书的这个目录空间现已满了,刷入不了。咱们可以经过 adb shell df 指令来查看这个 system 目录的空间剩余状况:

adb shell df system/

履行成果如下,可以看到 Use% 的值为 100%,可是 Available 不为 0,照这么说应该可以刷入,就很奇怪:

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

这个问题的处理方案可以在这篇博客中找到,说白了便是给 system 目录腾出空间,把里边的一些很明显不会用到的文件删除去。

对于我这台红米机,我就直接rm -r [文件]删除了 /system/app目录下的 Mipay/,看名字是和小米付出相关的,心想也用不到,就直接删了:

rm -r Mipay/
安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案
安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

然后再从头将手机和电脑衔接(拔掉手机和电脑衔接的数据线,再插回去),再次运转 push 指令就可以成功了。假如仍是不可可以把手机和电脑重连这个动作多试几次,趁便把手机后台开着的使用也开释一下。

将证书刷到体系证书中后,咱们再修正一下咱们刷入的这个证书文件的读写权限,然后重启手机即可:

adb shell
cd /system/etc/security/cacerts
chmod 777 [文件名].0 

重启手机后,用 Fiddler 即可抓到之前抓不到的数据包,比方这个某联合伙人 app 的登录接口 HTTPS 数据包:

安卓逆向|高版本安卓(7.0+)用 Fiddler 无法抓到 HTTPS 包问题解决方案

最后

到这儿在安卓 7.0+ 体系中刷入 Fiddler 证书的解说就完毕了,整个进程仍是学到了不少东西的。假如当初直接找某宝协助刷 root 或许直接买一台刷好 root 后的手机的话,也不会学到这么多。期望这篇文章可以对咱们有协助,可以节省咱们时间。假如依然遇到什么问题,欢迎在评论区留言,或许私信我沟通,咱们一起进步!

参阅材料

  • 【教程】安卓7.0-11.0高版别 fiddler抓包失利的处理方案_android7.0今后抓包失利
  • 不要找了!B站最纯洁的,小米root刷面具root教程科普视频
  • 【ADB】adb指令的装置和运用(超级详细,指令大全)_adb装置指令_Damon7575的博客-CSDN博客
  • Read only file system on Android – Stack Overflow
  • adb – Android: adbd cannot run as root in production builds – Stack Overflow
  • adb push 。。。显现:No space left on device_adb no space left on device_CRISTIANO Xusanduo的博客-CSDN博客