首页
社区
课程
招聘
[原创]内核学习阶段还在翻手册查 PDE/PTE 标志位?这个工具让你一眼看懂
发表于: 5天前 790

[原创]内核学习阶段还在翻手册查 PDE/PTE 标志位?这个工具让你一眼看懂

5天前
790

[原创]TF_PDE-PTE:x86/x64 分页地址转换与段描述符可视化学习工具

关于本工具声明:本工具在 AI(DeepSeek)协助下完成开发,核心逻辑由人工设计,代码实现 AI 参与。

开发过程:人工设计架构 + AI 辅助编码

0x00 写在前面

学习 x86 分页机制的时候,有没有这种感觉:

  • PDE/PTE 几十个标志位,学完就忘
  • WinDbg 的 !vtop / !pte 输出是一堆十六进制数,要对着手册手动拆位
  • 每次想确认一个线性地址转换是否正确,都要翻半天 Intel 手册

为了解决这个痛点,我写了一个本地 Qt 可视化学习工具:TF_PED-PTE

绿色 = 1(开启),红色 = 0(关闭),一眼看清标志位状态。 图片描述


0x01 工具定位

专治"学完就忘,不想翻笔记"的分页/段描述符标志位可视化查阅器

  • 粘贴即用:支持 WinDbg 输出自动解析
  • 一图胜千言:绿红块可视化,一眼看清标志位状态
  • 离线可用:无需网络,不依赖在线服务
  • 轻量快速:PySide6 / Qt 实现

0x02 功能概览

1. 分页地址转换(核心功能)

特性 说明
分页模式 非 PAE / PAE
输入方式 手工填写 CR3/PDPTE/PDE/PTE/线性地址,或直接粘贴 WinDbg 文本自动抽取
输出 详细文本报告 + 真彩色标志位卡片

真彩色标志位卡片示例: 图片描述 图片描述

  • ???? 绿色 = 1(开启)
  • 红色 = 0(关闭)
  • ⚪ 灰色 = 保留位 / 忽略位

2. 段描述符解析

支持解析 64 位段描述符:

  • Type / S / DPL / P / G / D/B / L
  • 自动区分代码段/数据段/系统段
  • 展示默认操作数宽度、栈指针语义等 图片描述

3. 分页位拆分

分页模式 位拆分
non_pae 10 / 10 / 12
pae 2 / 9 / 9 / 12
x64 9 / 9 / 9 / 9 / 12

以文本方式显示位切分和索引值。 图片描述


0x03 WinDbg 联动

支持以下格式的自动解析:

!vtop 输出示例:

kd> !vtop 3eb63ac0 0028E928
X86VtoP: Virt 0028e928, pagedir 3eb63ac0
X86VtoP: PAE PDPE 3eb63ac0 - 0000000019487801
X86VtoP: PAE PDE 19487008 - 0000000023ec2867
X86VtoP: PAE PTE 23ec2470 - 8000000019ed2967
X86VtoP: PAE Mapped phys 19ed2928

!pte 输出示例:

VA 12345678
PDE at C030048C    PTE at C0091A28
contains 00ABC003  contains 0FEDC007

粘贴到工具文本框,点击"从文本提取字段",自动填充所有字段并执行转换。


0x04 界面预览

┌─────────────────────────────────────────────────────────────────┐
│ [分页转换] [段描述符] [分页拆分]                                │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────────────┐ ┌─────────────────────────────────────┐ │
│ │ 输入区              │ │ ???? 标志位可视化面板                │ │
│ │ - 线性地址          │ │ ┌─────┬─────┬─────┬─────┬─────┐     │ │
│ │ - CR3               │ │ │  P  │ R/W │ U/S │ PWT │ PCD │     │ │
│ │ - PAE 复选框        │ │ │  11100  │     │ │
│ │ - PDPTE/PDE/PTE     │ │ └─────┴─────┴─────┴─────┴─────┘     │ │ 
│ │ - WinDbg 文本导入   │ │                                     │ │
│ └─────────────────────┘ │ ┌─────┬─────┬─────┬─────┬─────┐     │ │
│                         │ │  A  │  D  │  G  │ PAT │ NX  │     │ │
│                         │ │  10100  │     │ │
│                         │ └─────┴─────┴─────┴─────┴─────┘     │ │
│                         └─────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 详细报告                                                    │ │
│ │ ========================================================    │ │
│ │ 模式: PAE                                                   │ │
│ │ 线性地址: 0x0028E928                                        │ │
│ │ 物理地址: 0x19ED2928                                        │ │
│ │ 结论: PDPTE.P=1,PDE.P=1,PDE.PS=0,PTE.P=1,有效           │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

0x05 运行环境与使用方法

环境要求

  • Python 3.8+
  • PySide6

安装依赖

pip install PySide6

运行

python run_tf_ped_pte.py

快速上手

  1. 非 PAE 示例:点击"非 PAE 示例"按钮,自动填充并转换
  2. PAE 示例:点击"PAE 示例"按钮
  3. WinDbg 文本:复制 WinDbg 输出,粘贴到文本框,点击"从文本提取字段"

0x06 项目文件说明

文件 说明
run_tf_ped_pte.py 启动入口
tf_ped_pte/qt_app.py Qt 主界面
tf_ped_pte/paging_logic.py 分页换算核心逻辑
tf_ped_pte/gui_support.py WinDbg 正则解析、标志位颜色模型
tf_ped_pte/segment_logic.py 段描述符解析、分页拆分逻辑

0x07 已知限制

  • 当前仅支持 32 位线性地址的 PAE/非 PAE 转换(x64 模式仅位拆分支持)
  • 不直接连接 WinDbg,不读取 live memory
  • WinDbg 文本解析依赖正则表达式,极端格式可能需要微调

0x08 下载地址

GitHub4d5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6T1j5h3W2@1j5h3&6Y4x3o6x3J5i4K6u0r3f1p5g2p5i4K6u0V1f1q4c8q4i4K6u0V1g2X3W2*7i4K6u0r3N6s2u0W2k6g2)9J5c8X3#2S2K9h3^5`.


0x09 后续计划

  • x64 完整分页转换支持
  • 一键复制可视化面板为图片
  • 输入历史记录
  • 亮色/暗色主题切换

0x0A 写在最后

这个工具的目标很简单:当你需要查分页标志位的时候,不用再翻手册。

如果你觉得有用,欢迎点赞、转发、提 PR。

有问题或建议,直接回帖或 GitHub Issues 见。


TF_PDE-PTE —— 让分页学习不再痛苦 ????



传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 5天前 被刘宝编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 481
活跃值: (384)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
工程创建的时候手感不佳,名字打错了
5天前
0
游客
登录 | 注册 方可回帖
返回