zoukankan      html  css  js  c++  java
  • [保护模式]联系1 三环访问高2G

    // 三环读高两G.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <windows.h>
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
        int* gdtAddress = NULL; //定义个变量
        getchar();
        gdtAddress = (int*)0x80b95048; //复制一个高地址
        *gdtAddress = 2; 
        printf("%x,value =%x
    ", gdtAddress,*gdtAddress);
        system("pause");
        return 0;
    
     
    
    }

    会出现读取失败,那么此时我们需要借助Windbg来辅助操作!

    首先找到

    0x80b95048地址
    将他改写

    0: kd> eq 80b95048 00000000`12345678
    0: kd> dq gdtr
    80b95000 00000000`00000000 00cf9b00`0000ffff
    80b95010 00cf9300`0000ffff 00cffb00`0000ffff
    80b95020 00cff300`0000ffff 80008b1e`600020ab
    80b95030 84409333`dc003748 0040f300`00000fff
    80b95040 0000f200`0400ffff 00000000`12345678
    80b95050 84008933`b0000068 84008933`b0680068
    80b95060 00000000`00000000 00000000`00000000
    80b95070 800092b9`500003ff 00000000`00000000

     
       
    拆分
    0x80b95048地址
    拆分后:‭1000 0000 1011 1001 0101 0000 0100 1000‬
    根据 2 9 9 12的物理页进行重组
    因为结构大小为8位,如果要定义到目录还需乘它的位数
    2位 :10 2*8 (0a9f4801 )

    9位:00 0000 101    5*8 (00193063 )

    9位:1100 1010 1    195*8 (00b95163 )
    12 位:0000 0100 1000‬  48   (123456)这里已经到了具体指向数据了,所以它并不需要再乘位在虚拟机内运行程序,断在GETchar 然后再用Windbg接管
    使用!process 0 0 来遍历所有进程   (如果需要读物理地址那么前面加个!)
    填写000 则是为了防止读写属性参与运算!

    0: kd> !dq beaf6220+2*8
    #beaf6230 00000000`0a9f4801 00000000`0acf5801
    #beaf6240 00000000`5d0ab801 00000000`5d8ac801
    #beaf6250 00000000`5d8ad801 00000000`5d6ae801
    #beaf6260 00000000`5c6b8801 00000000`5c4b9801
    #beaf6270 00000000`5beba801 00000000`5c4bb801
    #beaf6280 00000000`5dbc1801 00000000`5e0c2801
    #beaf6290 00000000`5e1c3801 00000000`5e3c4801
    #beaf62a0 00000000`5989e801 00000000`5919f801
    
    0: kd> !dq 0a9f4000+5*8
    # a9f4028 00000000`00193063 00000000`b6a02863
    # a9f4038 00000000`00000000 00000000`001c2063
    # a9f4048 00000000`001c3063 00000000`001c4063
    # a9f4058 00000000`001c5063 00000000`001c6063
    # a9f4068 00000000`001c7063 00000000`001c8063
    # a9f4078 00000000`001c9063 00000000`001ca063
    # a9f4088 00000000`001cb063 00000000`001cc063
    # a9f4098 00000000`001cd063 00000000`001ce063
    
    0: kd> !dq 00193000 + 195*8
    #  193ca8 00000000`00b95163 00000000`00000000
    #  193cb8 00000000`00000000 00000000`00000000
    #  193cc8 00000000`00000000 00000000`00000000
    #  193cd8 00000000`00000000 00000000`00000000
    #  193ce8 00000000`00000000 00000000`00000000
    #  193cf8 00000000`00000000 00000000`00000000
    #  193d08 00000000`00000000 00000000`00000000
    #  193d18 00000000`00000000 00000000`00000000
    
    0: kd> !dq 00b95000 +48
    #  b95048 00000000`12345678 84008933`b0000068
    #  b95058 84008933`b0680068 00000000`00000000
    #  b95068 00000000`00000000 800092b9`500003ff
    #  b95078 00000000`00000000 00000000`00000000
    #  b95088 00000000`00000000 00000000`00000000
    #  b95098 00000000`00000000 87008905`2f980068
    #  b950a8 00000000`00000000 00000000`00000000
    #  b950b8 00000000`00000000 00000000`00000000

    原代码:

    a9f4028 00000000`00193063    3拆分后是0011   属于超级用户才能访问

    !ed a9f4028 00193067    7拆分后0111    
    把PDE第二位设置位普通用户

    就是一层层的把超级权限改成用户权限!
  • 相关阅读:
    用nodejs 开发的智能提示
    分布式系统之消息中间件rabbitmq
    理解RESTful架构
    zf框架的思想及学习总结
    php网上支付易宝
    phpstorm使用技巧
    phpstorm使用技巧
    mysql中的数据类型
    CF113D 高斯消元、dp
    bzoj4008: [HNOI2015]亚瑟王 dp
  • 原文地址:https://www.cnblogs.com/hanhandaren/p/11225817.html
Copyright © 2011-2022 走看看