zoukankan      html  css  js  c++  java
  • 保护模式(六):10-10-12分页(二)

    物理页的属性=PDE的属性&PTE的属性(后三个字节为属性)

    P:P=1为有效物理页
    R/W:R/W=1可读可写 R/W=0只读
    U/S:U/S=0 特权用户 U/S=1 普通用户
    PS:PS=1时PDE直接指向物理页
    A:A=1被访问过
    D:D=1被写过

    实验一:修改字符串(R/W)

    测试代码

    #include "stdafx.h"
    #include <windows.h>
    
    int main(int argc, char* argv[])
    {
        char* str="Hello World";
        printf("%x
    ",str);
        getchar();
        *str=0x61;
        printf("%s
    ",str);
        getchar();
        return 0;
    }
    
    //423fb4
    //0000 0000 01        1*4
    //00 0010 0011        23*4
    //1111 1011 0100     fb4
    kd> !dd 08285000+4
    # 8285004 05cf8067 00000000 00000000 00000000
    //属性067
    0000 0110 0111 R/W=1
    kd> !dd 05cf8000+4*23
    # 5cf808c 0c3d5025 00000000 027d6067 05afc225
    //属性025
    0000 0010 0101 R/W=0

    修改属性

    kd> !ed 5cf808c 0c3d5027

    实验二:读高地址(U/S)

    测试代码

    #include "stdafx.h"
    #include <windows.h>
    
    int main(int argc, char* argv[])
    {
        getchar();
        printf("%x
    ",*(DWORD*)0x8003f030);
        getchar();
        return 0;
    }
    //8003f030
    //1000 0000 00        200*4
    //00 0011 1111        3f*4
    //0000 0011 0000    30
    
    
    kd> !dd 00db9000+200*4
    #  db9800 0003b163 004001e3 0003e163 010001e3
    //属性163 0001 0110 0011 U/S=0
    kd> !dd 0003b000+3f*4
    #   3b0fc 0003f163 00040103 00041103 00042163
    //属性163
    0001 0110 0011 U/S=0

    修改属性

    kd> !ed 3b0fc 0003f167
    kd> !ed db9800 0003b167

  • 相关阅读:
    Python综合学习 python入门学习 python速成
    博客建设
    文献搜索方法
    Mac效率工具集合
    Mac High Sierra 三步搞定安装Eclipes
    Mac High Sierra一步搞定Mysql安装
    Mac中使用的建模工具/流程图制作
    R语言的安装以及入门
    (一)linux基本的操作命令
    小程序canvas简单电子签名
  • 原文地址:https://www.cnblogs.com/harmonica11/p/14159840.html
Copyright © 2011-2022 走看看