Huang Fei All NT下获得Ring0的技术(一) 22 Aug 98 19:02:24 NT下如何取到Ring0级执行权(1) 黄飞 98/8 (注:引用本文请先征得作者同意,谢谢!) =============================================== 这些天几个战友讨论95/98下RING0执行权讨论得热火朝天, 也提出了很好得实现方法.本文就NT下的这个问题进行探讨. RING0意味这什么? 熟悉汇编的朋友很清楚,取到RING0级的执行权,整个OS的 内存将暴露在你的眼皮下,可以直接操纵硬件端口,操纵 系统寄存器...不得了了... :) NT的保护? NT是纯的32位OS,MS引以位傲的操作系统,引用了许多VMS. UNIX等先进操作系统的概念,把自己的核心数据结构,代码 利用INTEL CPU的保护机制"完好"的包了起来.至今我仍未 发现在这方面NT有什么大的漏洞.我下面介绍的技术也有 一定缺陷. 概述: NT下要使自己的程序在RING0执行,要做一下工作: (1).写出自己要在RING0执行的代码 (2).写一个NT Driver,提供RING0调用Win32接口 (3).写一个NT Service,提供动态Create.Remove NT Driver的功能 (4).写自己的调用APP,与Service.Ring0 Code连接. 下面详细介绍各个部分: 1.NT driver部分 即使在NT driver中,NT Driver的封装机制也不让你 透过HAL层去直接操纵硬件,幸运的是,在NT的Kernel 中隐藏着一组GDT操作接口,但是由于MS的XX... 所有这些东东都是未公开的. :( 为此,我做的第一项工作就是挖掘,下面是挖出的金子, 大家共享吧 . :) // Undocumented DDK // NTSTATUS KeI386AllocateGdtSelectors( OUT PUSHORT SelArray, IN int NumOfSelectors ); NTSTATUS KeI386ReleaseGdtSelectors( OUT PUSHORT SelArray, IN int NumOfSelectors ); NTSTATUS KeI386SetGdtSelector( IN ULONG sels, IN PVOID desc ); // ... // 第3个可是我辛苦了一天的结果,NT不知被我搞死了多少次. :( 参数意义很好懂,看名字就行了. 另外,写过NT Driver的朋友一看就应该知道,这些API都是要在 Driver中才能调用的.我就不罗嗦了. 好了,敲的手都累了,这些天比较忙,只好抽空再写下一部分了. ===============================================(1) Over. ... Huang Fei ... ========= --- xMail 1.00 * Origin: Shanghai Shake-River BBS.(021-59572197) (6:654/1001)