Skip to content

Commit c2de4f6

Browse files
committed
add rootCA
1 parent 13b6d79 commit c2de4f6

File tree

3 files changed

+77
-1
lines changed

3 files changed

+77
-1
lines changed

source/_posts/trueblog/datastructure.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: 纯C语言实现的数据结构大作业
33
date: 2025/2/1 23:39:00
4-
updated: 2025/2/1 23:39:00
4+
updated: 2025/2/6 13:59:00
55
tags:
66
- non-ctf
77
---
+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
title: 在手机上向根证书区注入用户证书
3+
date: 2025/02/06 22:35:00
4+
updated: 2025/02/06 22:35:00
5+
tags:
6+
- non-ctf
7+
- KernelSU
8+
thumbnail: /assets/trueblog/rootca.jpg
9+
---
10+
11+
{% note blue fa-newspaper %}
12+
在高考结束后,买了小米13,没想到成了最后一部方便解锁的小米手机。看看现在的解锁政策,
13+
根本不是人能成功的。
14+
{% endnote %}
15+
16+
既然买了小米13,自然是要狠狠地刷机!刷上KernelSU之后,自然需要找些用武之地。LSPosed
17+
自不必说,root还可以做一些影响系统根目录的操作,比如写入根证书。为了在手机上抓包,
18+
我们可以使用PCAPdroid,然而,为了做中间人攻击解密https流量,还需要安装证书。
19+
安装证书后,下滑系统通知就会显示网络流量可能受到监控,这多少让强迫症看了有点难受。
20+
到网上搜索相关模块,都是将用户证书复制到根证书,那么就会出现如下问题:
21+
22+
安装模块后,为了使用户证书复制到根证书,需要安装用户证书然后重启;此时将用户证书删除,
23+
通知栏里的警告就会消失;然而,只要一重启手机,由于用户证书已经被删除了,
24+
模块便不会复制证书,导致无法解密。这看起来像是个死循环,无解了。
25+
26+
于是我打算自己写模块,将自己的证书放到模块中,然后在系统启动时加载到根证书中就可以了。
27+
28+
## Coding time
29+
30+
参照[KernelSU的模块开发指南](https://kernelsu.org/zh_CN/guide/module.html)
31+
加上[之前的方案](https://github.com/NVISOsecurity/MagiskTrustUserCerts)做参考,
32+
我开始自己写模块。主要代码如下:
33+
34+
```sh post-fs-data.sh
35+
#!/system/bin/sh
36+
MODDIR=${0%/*}
37+
38+
# should change all file time to a single one!
39+
cadir=$MODDIR/cacerts
40+
mkdir -p $cadir
41+
rm $cadir/*
42+
cp -f $MODDIR/*.0 $cadir
43+
cp /system/etc/security/cacerts/* $cadir
44+
set_perm_recursive $cadir root root 755 644 u:object_r:system_security_cacerts_file:s0
45+
mount --bind $cadir /system/etc/security/cacerts
46+
```
47+
48+
## 一些其他的尝试
49+
50+
我尝试过只复制单个证书;只复制证书后修改所有文件权限;使用`service`执行,
51+
都不能在系统中找到证书,即便在终端中直接列出文件夹的内容中是有的。因此以上已是最简操作,
52+
不能更短了。看来想让系统承认我们这个“外来”的证书,还是比较复杂的。
53+
54+
但是这个方案同样不是完美的,因为由于系统根证书目录被重新挂载了,里面所有的文件时间戳都会变成
55+
0,这也为后面埋下伏笔。
56+
57+
## 损坏的B站
58+
59+
在正常工作了几周后,b站首页突然无法更新了,反倒是动态还能正常工作。其他有些功能能工作,
60+
有些则不行,非常奇怪,看起来也不像是没网了。我试着抓了一下包,发现显示客户端不信任证书。
61+
好嘛,我加的证书被b站认出来了。果然,我只要卸载模块,b站就恢复正常了。
62+
63+
就在我一筹莫展时,我留意到我每天在b站上花的时间实在是太多了。
64+
65+
> 为什么不开启模块,以此来削减我使用b站的时间呢?卸载b站然后再装回来所花的成本太高了,
66+
> 毕竟数据会全部丢失;如果只是在scene里冻结b站,解冻的成本又太低,不足以阻拦我使用b站。
67+
68+
于是,这个方案就歪打正着地成为了我限制自己b站使用的方案。重启是一个成本不高不低,
69+
在应急时方便操作,在平时又嫌麻烦的操作。一开始,只能看动态中up主更新的视频其实挺合适,
70+
可是随着时间推移,所有的功能都变得不可用了,整个b站就废掉了。自此,我也没怎么拿手机看b
71+
站了,虽然手机上的b站形同虚设,但至少目的达到了。
72+
73+
## 参考
74+
75+
1. [模块开发指南](https://kernelsu.org/zh_CN/guide/module.html)
76+
2. [Magisk Trust User Certs](https://github.com/NVISOsecurity/MagiskTrustUserCerts)

source/assets/trueblog/rootca.jpg

60.6 KB
Loading

0 commit comments

Comments
 (0)