您现在的位置: 精品资料网 >> 企业管理 >> 管理知识 >> 资料信息

用VisualCCPU特权指令操作(doc 4页)

所属分类:
管理知识
文件大小:
55 KB
下载地址:
相关资料:
visual,cpu,特权,指令,操作
用VisualCCPU特权指令操作(doc 4页)内容简介

用VisualCCPU特权指令操作目录:
一、引言
二、基本思路
三、所用到的数据结构
四、具体实现


用VisualCCPU特权指令操作内容提要:
     80x86系列cpu具有四级保护机制。在windows 9x操作系统只使用0级和3级,以便于移植到精简指令集的计算机上,如rs4000等,这些处理器一般只有两个特权级,即系统级和用户级。在windows 9x系统环境,应用程序运行在ring3(3级),如果要运行特权指令就必须进入ring0(0级)。在同一任务内,实现特权级从外层到内层变换的普通途径是使用段间调用指令call,通过调用门进行转移;实现特权级从内层向外层变换的普通途径是使用段间返回指令ret。注意,不能用jmp指令实现任务内不同特权级的变换。调用门描述符转移的入口点包含目标地址的段及偏移量的48位全指针。在执行通过任务门的段间转移指令jmp或段间调用指令call时,指令所含指针内的选择子用于确定调用门,而偏移被丢弃;把调用门内的48位全指针作为目标地址指针进行转移。
      取得全局描述符表,搜索该表找到一个暂时为空的描述符,安装调用门,进行远程调用即可实现特权指令操作, 当type的低4位值为0xc时,这是一个386调用门(callgate)。在vc中定义"门"如下:struct gate{ //门结构类型定义 gdtr长48位,其中高32位为基地址,低16位为界限,gdtr中的段界限以字节为单位。在vc中定义,
  使用mfc appwizard新建一个基于对话框的应用程序,工程名为myring0。在对话框中添加一个按钮,修改id为id_getcr0,修改caption为取cr0的值,同时添加该按钮的消息处理函数void cmyring0dlg::ongetcr0()。新建一个头文件ring0.h并添加到工程中,添加下面的代码到ring0.h中。


 


..............................