首页
社区
课程
招聘
[原创]安卓驱动跳板 PTE 映射读写物理内存
发表于: 2026-8-30 10:39 10831

[原创]安卓驱动跳板 PTE 映射读写物理内存

2026-8-30 10:39
10831

安卓驱动跳板 PTE 物理映射读写

摘要


本文介绍一个基于 ARM64 页表项(PTE)直接操控的 Linux 内核模块,通过预先分配跳板页并动态修改其 PTE 映射,实现对任意用户态进程物理内存的透明读写。系统通过手动遍历五级页表(PGD→P4D→PUD→PMD→PTE)完成虚拟地址到物理地址的翻译,支持 1GB/2MB 大页识别与 4KB 标准页处理,并利用单页跳板 PTE 重映射技术绕过内核常规内存保护机制。配合软件 TLB 缓存优化,连续内存访问性能接近直接内存拷贝。整个过程对目标进程完全“透明”——不修改目标进程页表、不触发缺页异常。



一、技术背景与设计目标


1 传统内存访问的局限


在 Linux 内核中访问其他进程内存通常有以下方式:


| 方案 | 原理 | 缺陷 |

|------|------|------|

| `access_process_vm` | 内核标准接口 | 权限检查严格,受 `FOLL_FORCE` 限制 |

| `ioremap` | 建立新映射 | Device 属性导致非对齐崩溃,开销大 |


 2 设计目标


透明性:目标进程无任何感知,不修改其页表结构

高效性:避免频繁的页表分配与释放,仅修改单个 PTE

灵活性:支持任意物理内存访问,包括大页映射



二、技术架构



2核心原理



只分配一次,永久复用。后续所有物理内存访问都通过修改这一个 PTE 实现。


三、前置知识

在这我就不讲述基本的内核和系统原理了

1 五级页表遍历


ARM64 Linux 采用五级页表(实际使用取决于配置):


```

虚拟地址

    │

    ▼

[PGD] ──► [P4D] ──► [PUD] ──► [PMD] ──► [PTE] ──► 物理地址

 512      512       512       512       512

entries   entries   entries   entries   entries

```

2 基本的寄存器

当然在本帖只用到了存放pgd的寄存器

4 ttbr1_el1寄存器布局


TTBR1_EL1 (Translation Table Base Register 1)

64-bit 寄存器布局:


+-----------------------------------------------------+

| BADDR[47:1] | ASID[63:48] |

+-----------------------------------------------------+


具体位分配:

bits [63:48] - ASID (Address Space Identifier)

bits [47:1]  - BADDR (Base Address of translation table)

bit  [0]     - CnP (Common not Private)


5 arm64物理地址宽度

有俩个宽度分别是PA48和PA52


PA48(48位物理地址):


冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

最后于 2026-9-5 19:39 被gongchuang编辑 ,原因:
收藏
点赞 96
打赏
分享
最新回复 (37)
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2026-8-30 10:53
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2026-8-30 10:53
0
雪    币: 284
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
明白了,自己分配一个pte,要读取内存时,将该页替换为自己的pte,读取完成后切换回去,这个思路绝了,完美解决了要读取的数据还处于缺页状态,规避了读取触发异常被检测的可能性。
2026-8-30 11:29
1
雪    币: 84
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
看看
2026-8-30 13:48
0
雪    币: 729
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
看看
2026-8-30 14:03
0
雪    币: 1560
活跃值: (5823)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
666
2026-8-30 18:03
0
雪    币: 102
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
666
2026-8-30 21:44
0
雪    币: 112
活跃值: (9405)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
tql
2026-8-31 09:12
0
雪    币: 5
活跃值: (4465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
66666
2026-8-31 09:44
0
雪    币: 161
活跃值: (1228)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
666
2026-8-31 11:30
0
雪    币: 158
活跃值: (5651)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
看看 
2026-8-31 12:41
0
雪    币: 686
活跃值: (7057)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
学习了
2026-8-31 15:51
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
6
2026-8-31 15:53
0
雪    币: 947
活跃值: (1021)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
6666666666666
2026-8-31 16:06
0
雪    币: 95
活跃值: (3662)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
6666666666666
2026-8-31 17:41
0
雪    币: 141
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
66666
2026-8-31 17:44
0
雪    币: 276
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
1231
2026-9-1 08:44
0
雪    币: 378
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
666
2026-9-1 11:38
0
雪    币: 5351
活跃值: (6152)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
感谢分享。
2026-9-1 14:44
0
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
666
2026-9-1 15:37
0
雪    币: 79
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
感谢分享
2026-9-1 16:04
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
23
6
2026-9-1 16:35
0
雪    币: 47
活跃值: (2356)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
666
2026-9-1 22:05
0
雪    币: 4704
活跃值: (8122)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
25
感谢分享
2026-9-1 22:40
0
游客
登录 | 注册 方可回帖
返回