当前位置: 代码迷 >> 汇编语言 >> 怎么在win2K\XP下取得Ring0级权限?(读IO端口)
  详细解决方案

怎么在win2K\XP下取得Ring0级权限?(读IO端口)

热度:5354   发布时间:2013-02-26 00:00:00.0
如何在win2K\XP下取得Ring0级权限?(读IO端口)
常常听人讲,在9X下有很多方式取得Ring0权限,但在win2K\XP取得Ring0权限只能靠DDK写驱动。可是有些读写BIOS的小工具并没有用到驱动程序,例如FlashBIOS,还有一些在XP下的病毒。所以我认为一定还有什么方法可以取得Ring0权限。
希望了解相关技术的朋友能给我一些思路。
另外,我有个不成熟的想法,不知道是否可行,希望各位老师指教。
我对保护模式下程序不是很了解,无知者无畏,我就在这里现丑了。
思路:WIN32应用程序运行在Ring3级,而IOPL并为0禁止Ring3程序访问端口。但在TSS任务门的IO位图表却使我有了新的想法:能不能通过自己修改TSS描述符来使程序访问IO端口呢?
首先取得TSSR中的值,然后在GDT表里查找TSS门所在线性地址,这时修改任务门的DPL为Ring3(为了通过门权限保护)。通过门查找TSS任务描述符所在段,根据描述符格式,修改长度偏移,并新增IO位图表。在做完以上工作后,我认为该应用程序就应该具有了访问端口的权限,虽然不是Ring0,但可以访问包括BIOS所在的端口。目前只是思路,但不知是否可行,请各位前辈指点。
我认为可行的原因是,像SGDT,STS(好像是,指令我忘记了)在Ring3级可用。在修改进程内存时可使用WriteProcessMemory这样的API函数,由内核调用可以修改各种保护属性的段。
我知道我的这种想法太简单幼稚了,希望大家多提宝贵议建!

------解决方案--------------------------------------------------------
可以参考我写的文章:

http://community.csdn.net/Expert/topic/5295/5295089.xml?temp=4.829043E-02

也可以到我的blog看其他相关内容。
------解决方案--------------------------------------------------------
你的想法不错,可以实现。