- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C Builder的60个编程 2
C Builder的60个编程资料 2
31、令Win32应用程序跳入系统零层众所周知,在Windows95/98的Win32 on Intel x86体系中利用了处理器的三环保护模型中的零环(Ring0,最高权限级别)和三环(Ring3,最低权限级别)。一般应用程序都运行在Ring3下,受到严格的保护,只能规矩地使用Win32API。如果我们想进行一些系统级的操作,例如在嵌入汇编中使用诸如Mov EAX,CR0,或像在DOS下那样调用一些必不可少的系统服务(如BIOS,DPMI服务)而用Int xx,都会导致非法操作。但这种能力有时是必不可少的,一到这种时候Microsoft就建议编写一个VxD。VxD大家早有所闻了,在VxD里,不但可以执行CPU的所有指令,而且可以调用VMM(虚拟机管理器)和其他VxD提供的上千个系统级服务。获得这一能力的最本质原因在于它运行在Ring0,与系统内核同一级别。但是它体系的复杂性、开发工具的不易获得、帮助文档的不完备,使Microsoft排除了一大批程序员和竞争对手。而将在Windows2000(Windows98也开始支持)中取代VxD的WDM对Win95程序员也是个噩梦,它需要了解Windows NT核心驱动模型。--有没有简单一些的办法呢?我们可以令一个普通Win32应用程序运行在Ring0下,从而获得VxD的能力吗?答案是肯定的。下面我们就简述一下这一技巧,有关Intel x86保护模式的基础知识请大家看有关书籍。--首先此技巧基于以下理论根据:--一、SIDT指令(将中断描述符表寄存器IDTR--64位宽,16~47Bit存有中断描述符表IDT基地址-的内容存入指定地址单元)不是特权指令,就是说我们可以在Ring3下执行该指令,获得IDT的基地址,从而修改IDT,增加一个中断门安置我们的中断服务,一旦Ring3程序中产生此中断,VMM就会调用此中断服务程序,而此中断服务程序就运行在Ring0下了。这一点与在DOS下非常相似。--二、Windows95 Win32应用程序运行一个映射到全部4G内存的段中,选择子为0137h,Ring0中的VxD运行在另一个映射到全部4G内存的段中,选择子028h,这两个段除了选择子决定的访问权限不同外,没什么不同,各自段中相同的偏移量对应了相同的线性地址。所以我们放在Win32应用程序中的中断服务程序可以以Ring3的段偏移量被Ring0中的VMM寻址。--下面我们以具体例子进一步说明,程序中有详细注释。----这是一个Win32 Console Program(控制台应用程序),虽然运行中看起来很像DOS筐中运行的实模式DOS程序,但它是货真价实的运行在Ring3下的Win32程序。用Visual C++5.0 AppWizard创建一个Win32 Console Program项目,添加以下.CPP文件,编译即可。#include#include#include#include//若无DDK带下划线的可略去,这些语句演示了调用VMM/VXD服务DWORDLONG IDTR,SavedGate;WORD OurGate[4]={0,0x0028,0xee00,0x0000};//中断门描述符格式如下:DWORD _eax,_ecx,_cr0;WORD vmmver;HVM sysvm;void nothing(){//Used to test call in Ring0 sysvm=Get_Sys_VM_Handle();}void __declspec(naked)Ring0Proc(void)//中断例程,运行在Ring0{_asm{mov _eax,eax//mov _ecx,ecx//mov eax,CR0//测试Ring3中不能执行的特权指令mov _cr0,eax//}VMMCall(Get_VMM_Version);//调用VMM服务_asm{mov vmmver,ax}nothing();//测试在运行于Ring0的中断例程中调用子_asm iretd//中断返回,与在实模式编程无本质区别}void main()//主程序{_asm{mov eax,offset Ring0Proc mov[OurGate],ax//将中断函数的地址shr eax,16//填入新造的中断门mov[OurGate+6],ax//描述符sidt fword ptr IDTR//将中断描述符表寄存器(IDTR)的内容取出mov ebx,dword ptr[IDTR+2]//取出中断描述符表(IDT)基地址add ebx,8*9//计算Int 9的描述符应放置的地址选用Int9是因为它在Win32保护模式下未占用mov edi,offset SavedGat
您可能关注的文档
- “眼球对眼球的权利”——对质权制度比较研究_民法论文_法律论文__5414.doc
- “铁屋子”或“家”的民族寓言——论中国电影的一个原型叙事结构及其变形_电视电影论文_艺术论文__4563.doc
- 《催醒术》——1909年发表的“狂人日记”_现当代文学论文_文学论文__264.doc
- 《春望》五种英译文的比较研究,英语翻译学论文-_3168【论文全集】.doc
- “整理国故运动”与国学研究的学科重建_国学论文_哲学论文__3348.doc
- 侦查程序的正当化是我国法治建设发展的需要,侦查论文-_182【论文大全】.doc
- 从文化视角研究《红楼梦》中委婉语的翻译,英语翻译学论文-_194【论文大全】.doc
- 中国左翼文学、京海派文学及其在当下的意义_现当代文学论文_文学论文__195.doc
- 信息技术与教育相整合的进程,教育管理论文.doc
- 大学语文课程建设的一些建议,语文教育论文-_577【论文大全】.doc
- 2026中水东北勘测设计研究有限责任公司招聘(第一批)第二轮考核备考题库附答案详解(轻巧夺冠).docx
- 2026年中国气动钉枪行业市场发展战略分析及投资前景专项预测报告.docx
- 2026中国能源建设集团云南省电力设计院有限公司招聘备考题库及一套答案详解.docx
- 2026国家移民管理局出入境管理信息技术研究所招聘备考题库及答案详解(考点梳理).docx
- 2026年中国气体传感器市场分析及投资战略研究预测可行性报告.docx
- 2026中国航天科技集团公司第七研究院重庆航天设计院招聘备考题库及答案详解(名校卷).docx
- 2026年中国气枪行业发展前景及投资风险研究报告.docx
- 2026年中国皮带张紧轮行业前景调研及投资可行性研究报告.docx
- 2026年中国啤酒行业深度发展研究与“十五五”企业投资战略规划报告.docx
- 2026国泰海通证券(投行专场)校园招聘备考题库及答案详解(典优).docx
原创力文档


文档评论(0)