这些未公开的windows 2000核心功能调用(windows nt 4.0一般也可以调用)是针对 intel 80386(i386)以上cpu的,没有移植性,可能是微软公司不公开这些调用的原因。 这些调用一般以ke386 或者kei386开头,部分调用相当有用,笔者只分析了一部分调用的 函数原型,以后再分析余下的调用。 1、ke386setioaccessmap 函数原型:void ke386setioaccessmap(int, iopm *); 引出符号:_ke386setioaccessmap@8 2、ke386queryioaccessmap 函数原型:void ke386queryioaccessmap(int, iopm *); 引出符号:_ke386queryioaccessmap@8 3、ke386iosetaccessprocess 函数原型:void ke386iosetaccessprocess(peprocess, int); 引出符号:_ke386iosetaccessprocess@8 以上3个调用可以让nt/2000像windows 95/98一样在ring 3随意通过in/out指令实现 硬件i/o,具体使用方法笔者将在后续文章中说明。 4、ke386callbios 函数原型:不详 引出符号:_ke386callbios@8 调用功能:可能是bios功能调用 5、kei386setgdtselector 函数原型:ntstatus kei386setgdtselector(in ulong sels, in pvoid desc); 引出符号:_kei386setgdtselector@8 调用功能:设置一个全局描述符 6、kei386releaselid 函数原型:不详 引出符号:_kei386releaselid@8 调用功能:不详 7、kei386releasegdtselectors 函数原型:ntstatus kei386releasegdtselectors(out pushort selarray, in int numofselectors); 引出符号:_kei386releasegdtselectors@8 调用功能:释放一个全局描述符 8、kei386machinetype 函数原型:不详 引出符号:_kei386machinetype 调用功能:可能是取得计算机(cpu)的类型 9、kei386getlid 函数原型:不详 引出符号:_kei386getlid@20 调用功能:不详 10、kei386flattogdtselector 函数原型:不详 引出符号:_kei386flattogdtselector@12 调用功能:可能与内存地址变换有关 11、kei386call16bitfunction 函数原型:不详 引出符号:_kei386call16bitfunction@4 调用功能:可能与调用16位代码有关 12、kei386call16bitcstylefunction 函数原型:不详 引出符号:_kei386call16bitcstylefunction@16 调用功能:可能与调用16位代码有关 13、kei386allocategdtselectors 函数原型:ntstatus kei386allocategdtselectors(out pushort selarray, in int numofselectors); 引出符号:_kei386allocategdtselectors@8 调用功能:分配一个全局描述符 该功能与kei386setgdtselector功能、kei386releasegdtselectors功能配合使用,可以 修改gdt,从而可以定义自己的调用门,进入真正的nt ring 0层,从而可以直接修改gdt、 idt、ldt,直接访问全部内存和全部硬件,功能极其强大。 14、kei386abioscall 函数原型:不详 引出符号:_kei386abioscall@16 调用功能:可能与bios功能调用有关 15、kii386spinonspinlock 函数原型:不详 引出符号:kii386spinonspinlock@8 调用功能:不详 16、kei386eoihelper 函数原型:不详 引出符号:kei386eoihelper@0 调用功能:可能与中断处理有关
|