项目简介
PTEditor是一个轻量级库,可在用户空间对x86_64(Linux和Windows 10)以及ARMv8(Linux)系统中所有进程的各级页表进行修改。同时支持读取和设置x86的PATs、ARM的MAIRs等内存类型。该库仅依赖标准C功能,不依赖其他库。
项目的主要特性和功能
- 页表操作:可解析、更新页表条目,设置和清除页表项的位,读取和设置页帧号(PFN)。
- 系统信息获取:能获取系统默认页面大小。
- 物理页操作:可读写物理页内容,在Linux系统下还能将物理地址范围映射到虚拟地址空间。
- 分页结构管理:可获取和设置分页结构的根地址。
- TLB和屏障操作:可使指定地址的TLB无效化,执行全序列化屏障操作。
- 内存类型管理:支持读取和设置所有内存类型的值,操作特定内存类型属性,查找符合特定值的内存类型。
- 打印功能:提供漂亮打印页表条目的功能。
安装使用步骤
安装
Linux
- 从PPA安装(推荐)
- 添加PPA公钥和URL到包管理器并更新:
bash sudo apt update
- 安装内核模块:
bash sudo apt install pteditor-dkms
- 添加PPA公钥和URL到包管理器并更新:
- 从源码安装内核部分
- 安装内核头文件:
bash sudo apt install linux-headers-$(uname -r)
- 编译库和内核模块:
bash make
- 加载内核模块:
bash sudo insmod module/pteditor.ko
- 安装内核头文件:
Windows
- 使用预构建驱动(推荐)
- 临时禁用驱动签名强制:在开始菜单中按住Shift键点击“重启”,在重启菜单中选择“疑难解答 > 高级选项 > 启动设置”,按“7”或“F7”禁用驱动签名强制。
- 永久禁用驱动签名强制:在管理员命令提示符中输入
bcdedit /set testsigning on
,禁用测试模式则输入bcdedit /set testsigning off
。 - 加载驱动:在
driver/PTEditorLoader
目录下以管理员身份运行PTEditorLoader.exe
,卸载驱动则运行PTEditorLoader.exe --unload
。
- 从源码构建内核驱动:需安装Visual Studio(含Visual C++)、Windows SDK和Windows Driver Kit(WDK),然后使用Visual Studio项目进行构建。
使用
- 初始化和清理:使用
ptedit_init()
初始化PTEditor内核模块,使用ptedit_cleanup()
释放内核模块。 - 选择实现方式:使用
ptedit_use_implementation()
选择PTEditor的实现方式。 - 运行示例:参考
example.c
或demo
文件夹中的示例,例如memmap
可遍历并转储页表内容,virt2phys
可将虚拟地址转换为物理地址。 - 测试:在
test
文件夹中使用make
(Linux)或Visual Studio(Windows)编译并运行单元测试,以验证内核部分和库的功能。
下载地址
点击下载 【提取码: 4003】