(1条消息) Windows保护模式学习笔记(六)

Windows保护模式学习笔记(六)—— 10-10-12分页

  • 基本概念
    • 4GB内存空间
    • 有效地址-线性地址-物理地址
      • 有效地址与线性地址
      • 物理地址
    • 控制寄存器:Cr3
  • 10-10-12分页
    • 实验:通过线性地址找到物理地址
      • 第一步:将XP虚拟机设置为10-10-12分页模式
      • 第二步:新建一个记事本,写入"Hello World"
      • 第三步:使用Cheat Engine附加进程
      • 第四步:找到"Hello World"的线性地址
      • 第五步:将线性地址拆分为10-10-12三组比特组
      • 第六步:获得进程的Cr3
      • 第七步:通过Cr3找到字符串的物理地址
        • 第一层
        • 第二层
        • 第三层

基本概念

4GB内存空间

大家可能都听说过,每个程序在运行时,操作系统都会为其分配一段4GB的内存空间

但是我们的内存容量很可能最多只够为一个进程分配4GB的内存空间,如何做到为每个进程都分配呢?

实际上,进程被分配到的“4GB内存空间”只是虚拟的的内存空间,并不是指真正意义上的物理内存,虚拟内存与物理内存之间有一层转换关系

有效地址-线性地址-物理地址

有效地址与线性地址

先看如下指令:
MOV eax,dword ptr ds:[0x12345678]

其中,0x12345678 是有效地址
ds.Base + 0x12345678 是线性地址

注意:当段寄存器的Base为0时,有效地址=线性地址,大多数时候都是如此;但也有特殊情况,比如fs段寄存器的Base不为0

物理地址

描述:

我们平时所用到的系统DLL(动态链接库)存在于物理地址中,当程序想要调用某个DLL时,DLL便会映射一份线性地址给程序,这样程序就能够通过线性地址找到DLL的物理地址

控制寄存器:Cr3

描述:

每个进程都有一个Cr3(准确的说是都有一个Cr3的值,Cr3本身是个寄存器,一个核,只有一套寄存器)
Cr3指向一个物理页,一共4096字节
有关Cr3结构部分将在下一篇详细说明,这里只引入基本概念(实验需要)

10-10-12分页

实验:通过线性地址找到物理地址

第一步:将XP虚拟机设置为10-10-12分页模式

右键→我的电脑→属性→高级

将noexecute改为execute,保存,重启即可

第二步:新建一个记事本,写入"Hello World"

第三步:使用Cheat Engine附加进程

第四步:找到"Hello World"的线性地址

搜索字符串的时候别忘了勾上Unicode

可以看到左边出现了两个结果,我们可以在记事本中将最后的字符’d’改成’m’来确认哪个才是真正的线性地址

线性地址最终确定为:06765140

第五步:将线性地址拆分为10-10-12三组比特组

0    6    7    6    5    140
=
0000 0110 0111 0110 0101 140
=
0000011001// 0x19
1101100101// 0x365
140// 12个比特位刚好三个字节

第六步:获得进程的Cr3

在WinDbg中输入命令:!process 0 0

DirBase的值就是Cr3

第七步:通过Cr3找到字符串的物理地址

注意

  1. 找第一层和第二层的时候要将索引* 4(每个地址占4个字节)
  2. 每找到一层都要将地址后三位属性位清零再继续找下一层
第一层
第二层
第三层

使用db命令以字符形式查看

实验成功!

(0)

相关推荐

  • 实模式和保护模式区别及寻址方式

    转载自:http://blog.csdn.net/rosetta 64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别,在很多书本上也有谈及,无奈本人理解和感 ...

  • 计算机操作系统原理

    最近准备i面试,抽时间回顾一下计算机操作系统原理.  -2018.10.1 1.硬件基础 计算机的构成: 处理器(CPU):主要包括运算器.控制器 内存(主存储器) 输入输出设备 详细的讲,CPU内部 ...

  • 我去,又又又被内存坑了!

    大家好,我是你们的老朋友. 点进这篇文章的朋友,恭喜你们,又要收获新知识了~ 这又是一篇非常硬核的技术文,建议配合一瓶怡宝或营养快线食用,效果更好哦. 很多小伙伴在学操作系统的时候,学习到内存管理的部 ...

  • x86_64内存寻址 - 分页

    通过前面两个章节我们知道了实地址寻址和分段寻址,在这个章节我们将介绍分页寻址,在前面的文章我们知道,处理器访问内存的一个字节,首先将逻辑地址转换为线性地址,如果分页功能打开,那么线性地址会转换为最终的 ...

  • (1条消息) nsis page页面学习笔记

    4.5 页面 每个(非静默安装) NSIS 安装程序都有一个页面设置.每个页面可以是一个 NSIS 内建页面或者一个由用户函数(查看 nsDialogs 或 InstallOptions 实例)创建的 ...

  • (19条消息) Windows 10配置远程开机

    简介 最近有个需求,在外边或者是上班的时候想从家里的电脑拿点资料,虽然家里的路由器有公网IP地址,但是电脑总不能一直开着吧,然后就想到可以远程通过网卡唤醒电脑. 前提条件 拥有一个公网IP(一般可以找 ...

  • (4条消息) windows与linux复制文件(类似于linux的scp工具)

    相信习惯了linux主机之间使用scp传递文件的朋友.一定很苦恼假如要实现windows主机与linux主机之间进行文件传递十分费劲. 现在主流的方法就是 : 使用U盘 在 windows 和linu ...

  • (4条消息) H5的渲染流程笔记

    作者:JiajiaAz  来源:CSDN  原文:https://blog.csdn.net/qq_32657025/article/details/79569213 浏览器页面渲染流程 浏览器从HT ...

  • (8条消息) Windows

    目录 一.ZIP安装 二.启动.停止 三.登录.退出 四.新增.编辑.删除用户 五.配置.查看.撤销用户权限 六.新增.查看.选择.删除数据库 七.新增.编辑.查看.复制.删除数据库表 八.新增.编辑 ...

  • 设计模式-工厂方法模式学习笔记

    工厂方法模式 定义 工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负 ...

  • (11条消息) Windows上WinRAR.exe命令行参数说明

    winrar.exe 命令行参数 [语法] RAR <命令>   [ -<开关> ]   <压缩文件>   [ <@列表文件...> ] RAR [ & ...

  • (2条消息) windows路径操作API函数

    路径验证函数 PathCleanupSpec 去除路径中不合法的字符 PathCommonPrefix 比较并提取两个路径相同的前缀 PathFileExists 验证路径是否存在 PathMatch ...

  • (20条消息) Windows Server 2016 Hyper

    主题 虚拟机导出 虚拟机导入 虚拟机导出 点"开始"-"Windows管理工具"-"Hyper-V管理器",打开"Hyper-V管 ...