前言

众所周知,Android7.0以后系统不在信任用户的证书.这一改动使得我们在抓包的时候产生了诸多不便。在Android端很多人的做法是先刷入Magsik在通过Magsik模块的方式来将抓包证书修改成系统证书。
比较出名的就是大名鼎鼎的HttpCanary(小黄鸟),只是它虽然抓包方便,调试起来却没有Fiddler Charles等抓包工具方便。
接下来,我将介绍几种方法能让你像装了Magsik模块的小黄鸟一样方便的抓包,并且方便的调试,希望能对你有所帮助。

1.懒人专用法

Android系统对证书的不信任是从高版本开始的,那直接用低版本的Android系统即可完美解决这一问题。如果你手头没有低版本的安卓真机进行调试,可以尝试用PC端的Android模拟器来解决。诸如夜神(Nox),MuMu等等,绝大多数的模拟器都提供了Android5.0版本等低Android版本的系统。
在使用这些低版本的系统进行抓包时,除了APP使用上可能不如高版本流畅,在抓包这一方面效率绝对是相当的不错。
注意 --> 某些APP由于不支持32位可能无法运行。

2.逆向破解法

此法虽然名字高大上,实际上比较针对于自己写APP进行调试时使用。不过对于一些冷门的小软件或者是没那么注重安全的开发者所作出的产品来说,可能会有奇效。

⑴. 让apk的targetSDKVersion <= 23 即可解决. 碰到做了反编译等保护的很难实现
⑵. 在res/xml目录下添加network_security_config.xml文件,并在application下设置好如下属性:
android:networkSecurityConfig="@xml/network_security_config"
xml文件模板:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config><!-- 设置允许http明文传输--><base-config cleartextTrafficPermitted="true"><trust-anchors><!-- 设置信任系统级别证书--><certificates src="system" /><!-- 设置信任用户自定义证书--><certificates src="user" /></trust-anchors></base-config>
</network-security-config>

3.移动证书法

本文的重点方法,通过将证书移动至系统证书目录,来解决不信任证书造成的无法抓包问题。

(1). 导出证书

这里根据你的抓包工具来自行导出,但是你需要注意的是,现阶段的Android有效时间超过两年的证书。所以你导出的来的证书最好有效期不要超过这个时长,以避免不必要的麻烦。
此处以Fiddler为例,我们使用Fiddler的证书制作工具来导出一个证书。

(2).转换证书格式

使用OpenSSL对cer证书进行格式转换,变为pem格式

openssl x509 -inform DER -in FiddlerRoot.cer -out FiddlerRoot.pem

注意自己替换证书路径

在转换成pem格式后查看证书的hash值

openssl x509 -inform PEM -subject_hash_old -in FiddlerRoot.pem

如图所示:

记住图中圈出来的hash值,这个hash值就是最后转换出来的文件的文件名。
此时我们直接将转换好的pem证书进行重命名即可,如果你想用命令的话,Windows下可以用ren命令

ren FiddlerRoot.pem e5c3944b.0

如果你在Linux操作或者Android中使用终端模拟器的话就用mv命令
最后你将获得一个e5c3944b.0文件

(3).推送证书

将转换好的证书推送到Android的 /system/etc/security 目录下并赋予文件可读权限即可,这个目录就是系统证书的目录。

推送方法1:使用adb进行推送

首先Android端打开adb调试,这里我是用的网络调试,也可以自己接线,如果是模拟器的话,也可以用模拟器的办法连接模拟器的adb。

PC端使用adb命令连接设备

首先与设备进行配对
adb pair 192.168.2.43:41053
随后连接设备
adb connect 192.168.2.43:37877
最后进入shell环境
adb shell


注意上面连接设备时输入的ip和端口,是与设备截图中一一对应的。

连接好设备后,来到目标目录

cd /system/etc/security

注意这里的目录权限,是755

而我们想要往目录中存放文件需要写的权限,此处采用adb临时赋予777权限

chmod 777 cacerts

这里可能会失败,由于我是真机且已经获取了root,所以直接su获取权限给目录加上了777
如果你是带root的模拟器,一般不需要专门su获取权限

如果碰到提示Read-only file system,可以使用mount -o remount,rw /system,将系统文件夹挂载为可读写。然后再用chmod赋予777权限。

修改好权限后,输入exit退出shell(如果你su了需要两次exit才能退出)。再用adb命令来推送证书文件

adb push E:\Desktop\e5c3944b.0 /system/etc/security/cacerts

这里的证书文件目录记得自己替换


如果你是模拟器的话,经过上边的操作应该已经推送成功了,不过我这里是真机所以无法直接推送到/system下,所以我这里稍微绕一下,先推送到手机内存中,然后再进入shell转移到cacerts目录下

adb push E:\Desktop\e5c3944b.0 /sdcard/
su
mv /sdcard/e5c3944b.0 /system/etc/security/cacerts


这里还要检查下你把文件推送过去,一定要给读的权限,不然在已信任的证书中是看不到这个证书的

chmod 666 e5c3944b.0

同样是真机的话记得推送完文件以后把目录的权限改回755

推送方法2:Root权限直接转移

既然你已经有了root权限,完全可以通过软件直接在Android端直接进行转移

图示为使用MT管理器直接将证书移动到系统证书目录中

总结:

不管你用什么办法,只要把证书文件移动到/system/etc/security/cacerts这个目录下,并赋予证书文件可读的权限即可.

4.全局代理法

这个办法我并没有试验过,不过据说雷电模拟器是可行的

adb shell settings put global http_proxy <代理ip>:<代理端口>

参考文章:

https://blog.csdn.net/qq_43278826/article/details/124291040

Android不信任证书导致无法抓包的解决办法相关推荐

  1. 移动安全:多方法实现Android导入系统证书并用Burp抓包

    文章目录 0x0需求 1x0 环境准备 2x0 导入系统证书 2x1 方法一:Android访问代理 2x2 方法二:adb推入证书 3x0 抓包测试 总结 0x0需求 一般来说在Android7以上 ...

  2. Fiddler / Charles - 夜神模拟器证书安装App抓包

    Fiddler/Charles - 夜神模拟器证书安装App抓包 文章目录 Fiddler/Charles - 夜神模拟器证书安装App抓包 前言 一.软件安装 1.Openssl安装 1.1下载安装 ...

  3. eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法

    eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法 我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动生成 ...

  4. eclipse android 不会自动生成R.java文件和包的解决办法

    eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法 我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动生成 ...

  5. android 屏幕旋转不重新加载,Android webview旋转屏幕导致页面重新加载问题解决办法...

    Android webview旋转屏幕导致页面重新加载问题解决办法 1. 在create时候加个状态判断 protected void onCreate(Bundle savedInstanceSta ...

  6. 手机安装软件解析包错误解决办法

    下载了一款新的APP,满心欢喜的正准备体验的时候,却发现出现了"解析包时出现问题"之类的提示,连安装都无法成功,这样的体验肯定非常不妙.那么安卓解析包出现问题时有没有好的解决办法呢 ...

  7. Windows10 关于系统中断CPU占用过高导致电脑变卡的解决办法

    Windows10 关于系统中断CPU占用过高导致电脑变卡的解决办法   最近一段时间笔记本一直很卡,不管打开几个程序,任务管理器中总会有CPU占用80%以上,这一度让我抓狂,开始网上搜教程,然后开始 ...

  8. 关于pycharm中无法安装第三方包的解决办法

    关于pycharm中无法安装第三方包的解决办法) 前提 近期在利用 pycharm 安装第三方库时会提示 pip 不是最新版本, 因此对 pip 进行更新,但是生成最新版本之后, pip 中由于缺少 ...

  9. 【Android教程】Android Studio找不到连接的手机完全解决办法

    Android Studio找不到连接的手机完全解决办法 1.问题背景 现在Android大多都用谷歌的Android Studio来开发 但是 一开始使用Android Studio都不会那么顺利 ...

最新文章

  1. NLP任务非Transformer不可?
  2. 圆你“鸟人”梦,全身VR模拟飞行器Birdly带你飞
  3. [Bjoi2014]大融合
  4. python字符串打印教学_python字符串格式化教你正确打印 : D
  5. python编程软件p-Python编程工具pycharm的使用
  6. docker mysql 无权限_Docker 中级篇
  7. Python Django session存取值代码演示及jsonpickle序列化
  8. 简单的聊聊,顺便招前端
  9. 浪费了4年后,公司的产品小哥去快手搞 Java 了
  10. 建立U盘免疫病毒文件_七夕小子_新浪博客
  11. java maven是做什么的_maven是干什么用的
  12. 程序员996可还好?某公司强制实行997、007,网友:钱给到位了吗?
  13. 计算机在饲养管理方面的应用,高新技术对奶牛业的应用
  14. FTP和FXP的区别
  15. MyBase 与 HTML Help Workshop 编辑chm
  16. unity避免相机穿墙
  17. 芯片k66中文数据手册_IXFK66N50Q2
  18. wxpython wx.Destroy()和wx.Close()区别
  19. JTAG-SWD转接
  20. Html5 Egret游戏开发 成语大挑战(九)设置界面和声音管理

热门文章

  1. 物联网控制原理与技术--基于Matlab/PID控制仿真的应用(超详细/设计/实验/作业/练习)
  2. wpf中EventHandler的使用
  3. 浅析Windows命名管道Named Pipe
  4. 精选用户故事|洞态在聚水潭的误报率几乎为0,如何做到?
  5. 哈希表(Hash Table)day05
  6. 阿里云EMAS12月产品动态更新
  7. COMSOL结构隔声量计算
  8. C#.NET机器学习与彩票数据分析
  9. L1-072 刮刮彩票 - java
  10. jQM note:开发工具的选择