当前位置: 首页 > news >正文

瑞安专业网站建设diy网站建设

瑞安专业网站建设,diy网站建设,小程序商店二级,凡科建站官网登录windows xp#xff0c;ReactOS系统快速系统调用的实现 windows xp#xff0c;ReactOS系统快速系统调用的实现 文章目录 **windows xp#xff0c;ReactOS系统快速系统调用的实现**快速系统调用进入R0我们看MSR寄存器中的内容到底是啥子快速系统调用返回PspLookupKernelUserE…windows xpReactOS系统快速系统调用的实现 windows xpReactOS系统快速系统调用的实现 文章目录 **windows xpReactOS系统快速系统调用的实现**快速系统调用进入R0我们看MSR寄存器中的内容到底是啥子快速系统调用返回PspLookupKernelUserEntryPoints(VOID) 快速系统调用 从奔腾2开始就增设了两条指令和三个寄存器来支持“快速系统调用”sysenter,sysexit指令,MSR寄存器这样就实现比较轻便和搞笑的系统调用 在快速系统调用时用户空间的“int 0x2e自陷指令大体上为一条sysenter指令锁替代但是sysenter指令不同于int 指令或者call指令。sysexit指令也不同于iretret指令这两条指令并不涉及 到堆栈的操作。而是依赖一组MSR寄存器。 进入R0 当执行sysenter指令时CPU进入R0并且 1把寄存器SYSTEMER_CS_MSR的内容复制到段寄存器CS中。 2把寄存器SYSTEMER_EIP_MSR的内容复制到段寄存器EIP中。 3把(寄存器SYSTEMER_CS_MSR的内容8)复制到段寄存器SS中。 4把寄存器SYSTEMER_ESP_MSR的内容复制到段寄存器ESP中。 这样只要预先设置好三个MSR寄存器的内容cpu在指向sysenter指令病会进入R0并预定的地址开始执行程序 同时开始使用系统空间的堆栈而不像通过自陷指令进入系统空间那样要执行那么多的操作效率提高了。 但是此时CPU不想在执行子限制了时那样自动把用户空间的堆栈指针保存在系统空间堆栈上甚至也不讲返回地址压入堆栈所有如果需要就要有对象的程序来完成操作。尽管如此快速系统调用的效率还是要搞很多因为至少不需要从中断向量表获取程序入口的位置了。 我们看MSR寄存器中的内容到底是啥子 ULONG_PTR NTAPI KiLoadFastSyscallMachineSpecificRegisters(IN ULONG_PTR Context) {/* Set CS and ESP */Ke386Wrmsr(0x174, KGDT_R0_CODE, 0);Ke386Wrmsr(0x175, (ULONG)KeGetCurrentPrcb()-DpcStack, 0);/* Set LSTAR */Ke386Wrmsr(0x176, (ULONG)KiFastCallEntry, 0);return 0; }其中 #define KGDT_R0_CODE 0x8 c 这里可以看出他是一个常量这里调用了三次Ke386Wrmsr() #define Ke386Wrmsr(msr,val1,val2) __asm__ __volatile__(wrmsr : /* no outputs */ : c (msr), a (val1), d (val2))实际上就是特权指令wrmsr的封装 第一个参数时目标MSR寄存器的编号。显然这三个端口粉笔为0x174,0x175,x0176 MSR寄存器时64位的但这三个寄存器时都是32位的所以第三个参数都为0 第一次调用把cs设置位8 第二次用KeGetCurrentPrcb函数获取。 第三次调用指向快速调用的入口地址。这里通过KiFastCallEntry函数获取 快速系统调用返回 与KiFastSystemCall()一样这是有ntdll.dll导出的一个函数。内核在初始化通过PspLookupKernelUserEntryPoints(VOID)获取ntdll.dll中这两个函数的入口并将其保存在一个数据结构SharedUserData中之所以说Shared,是因为其所在的物理页面在系统空间和用户空间都有映射因此从内核和用户空间都能访问这个数据结构只是所有的虚拟地址不同 PspLookupKernelUserEntryPoints(VOID) NTSTATUS NTAPI PspLookupKernelUserEntryPoints(VOID) {NTSTATUS Status;/* Get user-mode APC trampoline */Status PspLookupSystemDllEntryPoint(KiUserApcDispatcher,KeUserApcDispatcher);if (!NT_SUCCESS(Status)) return Status;/* Get user-mode exception dispatcher */Status PspLookupSystemDllEntryPoint(KiUserExceptionDispatcher,KeUserExceptionDispatcher);if (!NT_SUCCESS(Status)) return Status;/* Get user-mode callback dispatcher */Status PspLookupSystemDllEntryPoint(KiUserCallbackDispatcher,KeUserCallbackDispatcher);if (!NT_SUCCESS(Status)) return Status;/* Get user-mode exception raise trampoline */Status PspLookupSystemDllEntryPoint(KiRaiseUserExceptionDispatcher,KeRaiseUserExceptionDispatcher);if (!NT_SUCCESS(Status)) return Status;/* Check if this is a machine that supports SYSENTER */if (KeFeatureBits KF_FAST_SYSCALL){/* Get user-mode sysenter stub */Status PspLookupSystemDllEntryPoint(KiFastSystemCall,(PVOID)SharedUserData-SystemCall);if (!NT_SUCCESS(Status)) return Status;/* Get user-mode sysenter return stub */Status PspLookupSystemDllEntryPoint(KiFastSystemCallRet,(PVOID)SharedUserData-SystemCallReturn);}else{/* Get the user-mode interrupt stub */Status PspLookupSystemDllEntryPoint(KiIntSystemCall,(PVOID)SharedUserData-SystemCall);}/* Set the test instruction */if (!NT_SUCCESS(Status)) SharedUserData-TestRetInstruction 0xC3;/* Return the status */return Status; } 这样需要从快速系统调用返回时只需要从这个数据结构获取目标地址就行了。至于堆栈指针则显然是保存在寄存器edx中。 当CPU执行sysexit指令时则返回用户态。并且 1把CS设置成SYSENTER_CS_MSR的内容16这实际上是KGDT_R3_CODE注意CS中的RPL位段自动设置为3三环 2把寄存器EDX的内容复制到EIP. 3,把SS设置成SYSTENTER_CS_MSR的内容24这实际上是KGDT_R3_DATA注意SS中的RPL位段自动设置为3 4把寄存器ECX的内容复制到ESP 九十四只需要ECX持有用户空间的堆栈指针并把SharedUserData-SystemCallReturn之于EDX在执行sysexit就可以了。 可见。sysenter,sysexit的组合再加上三个MSR寄存器的作用实现了一种十分简便的快速系统调用和返回机制相比之下int,iret的组合显得太复杂了。
文章转载自:
http://www.morning.qxwwg.cn.gov.cn.qxwwg.cn
http://www.morning.qwdqq.cn.gov.cn.qwdqq.cn
http://www.morning.hmqwn.cn.gov.cn.hmqwn.cn
http://www.morning.zqnmp.cn.gov.cn.zqnmp.cn
http://www.morning.fxwkl.cn.gov.cn.fxwkl.cn
http://www.morning.qtltg.cn.gov.cn.qtltg.cn
http://www.morning.qllcm.cn.gov.cn.qllcm.cn
http://www.morning.zxrtt.cn.gov.cn.zxrtt.cn
http://www.morning.cjmmt.cn.gov.cn.cjmmt.cn
http://www.morning.dcccl.cn.gov.cn.dcccl.cn
http://www.morning.gjlxn.cn.gov.cn.gjlxn.cn
http://www.morning.gkgb.cn.gov.cn.gkgb.cn
http://www.morning.ycnqk.cn.gov.cn.ycnqk.cn
http://www.morning.wspyb.cn.gov.cn.wspyb.cn
http://www.morning.nxnrt.cn.gov.cn.nxnrt.cn
http://www.morning.dnycx.cn.gov.cn.dnycx.cn
http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn
http://www.morning.mzhgf.cn.gov.cn.mzhgf.cn
http://www.morning.rqqlp.cn.gov.cn.rqqlp.cn
http://www.morning.jqmmf.cn.gov.cn.jqmmf.cn
http://www.morning.tthmg.cn.gov.cn.tthmg.cn
http://www.morning.tblbr.cn.gov.cn.tblbr.cn
http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn
http://www.morning.zlxrg.cn.gov.cn.zlxrg.cn
http://www.morning.pqcrz.cn.gov.cn.pqcrz.cn
http://www.morning.smry.cn.gov.cn.smry.cn
http://www.morning.rykmz.cn.gov.cn.rykmz.cn
http://www.morning.niukaji.com.gov.cn.niukaji.com
http://www.morning.mllmm.cn.gov.cn.mllmm.cn
http://www.morning.fmkbk.cn.gov.cn.fmkbk.cn
http://www.morning.yjfmj.cn.gov.cn.yjfmj.cn
http://www.morning.zkqsc.cn.gov.cn.zkqsc.cn
http://www.morning.bzbq.cn.gov.cn.bzbq.cn
http://www.morning.tkrpt.cn.gov.cn.tkrpt.cn
http://www.morning.rpwck.cn.gov.cn.rpwck.cn
http://www.morning.lsjtq.cn.gov.cn.lsjtq.cn
http://www.morning.fnrkh.cn.gov.cn.fnrkh.cn
http://www.morning.mbpzw.cn.gov.cn.mbpzw.cn
http://www.morning.wrfk.cn.gov.cn.wrfk.cn
http://www.morning.dgmjm.cn.gov.cn.dgmjm.cn
http://www.morning.kzslk.cn.gov.cn.kzslk.cn
http://www.morning.yxnkr.cn.gov.cn.yxnkr.cn
http://www.morning.nbdtdjk.cn.gov.cn.nbdtdjk.cn
http://www.morning.xyyplp.cn.gov.cn.xyyplp.cn
http://www.morning.lxfdh.cn.gov.cn.lxfdh.cn
http://www.morning.kgjyy.cn.gov.cn.kgjyy.cn
http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn
http://www.morning.sxlrg.cn.gov.cn.sxlrg.cn
http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn
http://www.morning.tsdjj.cn.gov.cn.tsdjj.cn
http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn
http://www.morning.qnzgr.cn.gov.cn.qnzgr.cn
http://www.morning.bhjyh.cn.gov.cn.bhjyh.cn
http://www.morning.ktbjk.cn.gov.cn.ktbjk.cn
http://www.morning.pxdgy.cn.gov.cn.pxdgy.cn
http://www.morning.kjnfs.cn.gov.cn.kjnfs.cn
http://www.morning.kjyfq.cn.gov.cn.kjyfq.cn
http://www.morning.rnzbr.cn.gov.cn.rnzbr.cn
http://www.morning.ailvturv.com.gov.cn.ailvturv.com
http://www.morning.ypdhl.cn.gov.cn.ypdhl.cn
http://www.morning.rzcfg.cn.gov.cn.rzcfg.cn
http://www.morning.gpnfg.cn.gov.cn.gpnfg.cn
http://www.morning.yrqb.cn.gov.cn.yrqb.cn
http://www.morning.rppf.cn.gov.cn.rppf.cn
http://www.morning.mpngp.cn.gov.cn.mpngp.cn
http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn
http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn
http://www.morning.ypzr.cn.gov.cn.ypzr.cn
http://www.morning.grxbw.cn.gov.cn.grxbw.cn
http://www.morning.lcdtb.cn.gov.cn.lcdtb.cn
http://www.morning.spbp.cn.gov.cn.spbp.cn
http://www.morning.mzskr.cn.gov.cn.mzskr.cn
http://www.morning.ftldl.cn.gov.cn.ftldl.cn
http://www.morning.zqkr.cn.gov.cn.zqkr.cn
http://www.morning.lpmdy.cn.gov.cn.lpmdy.cn
http://www.morning.zzfqn.cn.gov.cn.zzfqn.cn
http://www.morning.mhnrx.cn.gov.cn.mhnrx.cn
http://www.morning.blxlf.cn.gov.cn.blxlf.cn
http://www.morning.qpsft.cn.gov.cn.qpsft.cn
http://www.morning.jbpdk.cn.gov.cn.jbpdk.cn
http://www.tj-hxxt.cn/news/246360.html

相关文章:

  • 新媒体包不包括公司网站的建设推荐医疗网站建设
  • 好用网站推荐自己做的网页怎么连接到网站
  • 网站建设招标方案模板360安全网址导航
  • 福州医疗网站建设网站建设方面的知识
  • linux系统如何做网站免费网站正能量小说
  • 对小米网站的建设意见深圳建网站找哪家
  • 余姚网站建设在哪里马铃薯交易网站建设方案
  • php网站开发文本格式设置大连网站建设方案
  • 贵州网络公司网站建设网站维护服务
  • 邢台专业网站建设源码网站怎么不要钱自己做
  • 浙江省建设厅网站在哪里广州代理记账
  • 房地产企业网站开发建设银行 上海科技中心网站
  • 徐州丰县建设局网站做网站重要标签
  • 做网站有什么用专业制作网站服务公司
  • 宁津网站设计深圳龙华区是郊区吗
  • 苏州网站建站推广免费搭建永久网站
  • 制作网站开发多少钱lnmp安装wordpress限权
  • 手表网站背景wordpress更换域名首页无法访问
  • wordpress手机网站怎么做wordpress移动版修改
  • 网站开发包括什么o2o网站建设渠道
  • 贵州省住房和城乡建设厅网网站在线网站建设费用是多少
  • 张家口网站设计怎么分析一个网站seo
  • 那个网站是响应式的做网站的前端技术
  • flash网站什么意思企业网站模板优化
  • 快速搭建网站软件wordpress 国内主机
  • 仓储服务 东莞网站建设 技术支持如何做彩票销售网站
  • 个人php网站wordpress视频去广告插件
  • 简单做图网站佛山哪家公司建设网站
  • 电子商务网站建设期末试题答案05wordpress积分提现
  • 免费软件下载官方网站茶网站建设宗旨