zoukankan      html  css  js  c++  java
  • 保护模式阶段测试说明

    保护模式阶段测试说明

    感谢hambaga师傅的博客

     要求

      给定一个线性地址,和长度读取内容

     这个其实就是造轮子,先咕咕咕了

    申请长度为100的DWORD的数组,且每项用该项的地址初始化

    // Task_Segment.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include<windows.h>
    
    DWORD* arr;
    
    DWORD* GetPDE(DWORD addr)
    {
        return (DWORD*)(0xc0600000+((addr>>18)&0x3ff8));
    }
    
    DWORD* GetPTE(DWORD addr)
    {
        return (DWORD*)(0xc0000000+((addr>>9)&0x7ffff8));
    }
    
    __declspec(naked) void func()
    {
        __asm
        {
            pushad
            pushfd
        }
        *GetPTE(0x1000)|=*GetPTE((DWORD)arr);
        __asm
        {
            popfd
            popad
            iretd
        }
    }
    
    int main(int argc, char* argv[])
    {
    
        arr=(DWORD*)VirtualAlloc(0,0x1000,MEM_COMMIT,PAGE_READWRITE);
        int i=0;
        for(i=0;i<100;i++)
        {
            arr[i]=(DWORD)(arr);
        }
        printf("在IDT表构建中断门,请在windbg中执行下面的指令:
    ");
        printf("eq 8003f500 %04xee00`0008%04x",(DWORD)func>>16,(DWORD)func&0x0000ffff);
        getchar();
        __asm int 0x20
    
        unsigned long* p;
        p=(DWORD*)(0x1000);
    
        //printf("%x
    ",p);
    
        for(i=0;i<100;i++)
        {
            printf("%x:%x
    ",i,p[i]);
        }
        getchar();
        return 0;
    }
  • 相关阅读:
    撕衣服的简易实现
    简易的画画板的实现
    图片简易处理
    在内存中创建原图的副本
    缩放图片并加载到内存中
    加载大图片的OOM异常
    计算机表示图形的形式
    虚拟短信
    ContentProvider 共享数据
    内容观察者
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/13896649.html
Copyright © 2011-2022 走看看