欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]Windows(x86)页表与虚拟空间之我见

[原创]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。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功