• 保护模式(六):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

  • 相关阅读:
    chrome 浏览器设置useragent为微信浏览器
    js 16进制颜色和RGBA颜色互转
    json parse 大数精度丢失
    taro 小程序react 搜索高亮关键字
    sourcetree 配置 openssh
    一次性卸载npm本地包(node_modules)依赖
    微信小程序订阅消息开发总结
    微信小程序请求设置权限
    taro
    浅谈JS之AJAX
  • 原文地址:https://www.cnblogs.com/harmonica11/p/14159840.html
Copyright © 2020-2023  润新知