[原创]Windows(x86)页表与虚拟空间之我见
运行环境:
- 主机系统:Windows 10 x64
- 目标系统:Windows XP sp3 x86
工具软件:
- 虚拟机:Virtual Box
- 编译器:Visual Studio 2017
- 调试器:Windbg、OllyDBG
参考书籍:
- 《Windows 内核设计思想》
- 《Windows 核心编程》
- 《软件调试》
参考博文:
本文引用了以上书籍、文章的部分观点,算是一篇学习笔记。在此感谢各位作者!
页表机制准确的说是CPU实现的特性,由OS加以利用。网上有很多陈述页表机制的文章,但以Linux居多,Windows偏少,且很多都是理论层面借图表的阐述,或许对于科班出身的人士来说是小菜一碟,可对我等自学爱好者而言却经常是一脸懵逼的感叹!因此,萌发了动手实践的想法,经过一翻折腾,总算小有心得,就此记录于网际,希望本文能给和我一样的爱好者以帮助。本文可能存在很多歪解,请各位看官多多斧正!
本文试图解决的疑问:
- 页有多少个?
- 页每个进程都有吗?
- 页多大?
- 页放在哪里?
- 页如何查看?
- 页如何修改?
- 页如何隔离进程?
- 页和虚拟地址的关系?
- 页在何时被使用?
从test.exe开始:
// test.exe 源码
#include <iostream>
int main()
{
std::cin.get (); // 等待做手脚
int* p = NULL;
*p = 0x89abcdef ; // 向0指针写入数据
std::cout << "Hello nullptr!\n"; // 改编自经典:)
return 0;
}
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
复制成功
