1 《Undocumented Windows 2000 Secrets》翻译 --- 第五章( 六 )


NtSaveKey
0xB6
NtSignalAndWaitForSingleObject
NtSaveMergedKeys
0xB7
NtStartProfile
NtSecureConnectPort
0xB8
NtStopProfile
NtSetloCompletion
0xB9
NtSuspendThread
NtSetContextThread
0xBA
NtSystemDebugControl
NtSetDefaultHardErrorPort
0xBB
NtTerminateProcess
NtSetDefaultLocale
0xBC
NtTerminateThread
NtSetDefaultUILanguage
0xBD
NtTestAlert
NtSetEaFile
0xBE
NtUnloadDriver
NtSetEvent
0xBF
NtUnloadKey
NtSetHighEventPair
0xC0
NtUnlockFile
NtSetHighWaitLowEventPair
0xC1
NtUnlockVirtualMemory
NtSetlnformationFile
0xC2
NtUnmapViewOfSection
NtSetlnformationJobObject
0xC3
NtVdmControl
NtSetlnformationKey
0xC4
NtWaitForMultipleObjects
NtSetlnformationObject
0xC5
NtWaitForSingleObject
NtSetlnformationProcess
0xC6
NtWaitHighEventPair
NtSetlnformationThread
0xC7
NtWaitLowEventPair
NtSetlnformationToken
0xC8
NtWriteFile
NtSetlntervalProfile
0xC9
NtWriteFileGather
NtSetLdtEntries
0xCA
NtWriteRequestData
NtSetLowEventPair
0xCB
NtWriteVirtualMemory
NtSetLowWaitHighEventPair
0xCC
NtCreateChannel
NtSetQuotalnformationFile
0xCD
NtListenChannel
NtSetSecurity O b j ect
0xCE
NtOpenChannel
NtSetSystemEnvironment Value
0xCF
NtReplyWaitSendChannel
NtSetSystemlnformation
0xD0
NtSendWaitReplyChannel
NtSetSystemPowerSrate
0xD1
NtSetContextChannel
NtSetSystemTime
0xD2
NtYieldExecution
NtSetThreadExecutionState
0xD3
N/A
NtSetTimer
0xD4
N/A
NtSetTimerResolution
0xD5
N/A
NtSetUuidSeed
0xD6
N/A
NtSetValueKey
0xD7
N/A
NtSetVolumelnformationFile
0xD8
N/A
NtShutdownSystem
0xD9
N/A
NtSignalAndWaitForSingleObject
0xDA
N/A
NtStartProfile
0xDB
N/A
NtStopProfile
0xDC
N/A
NtSuspendThread
0xDD
N/A
NtSystemDebugControl
0xDE
N/A
NtTerminateJobObject
0xDF
N/A
NtTerminateProcess
0xE0
N/A
NtTerminateThread
0xE1
N/A
NtTestAlert
0xE2
N/A
NtUnloadDriver
0xE3
N/A
NtUnloadKey
0xE4
N/A
NtUnlockFile
0xE5
N/A
NtUnlockVirtualMemory
0xE6
N/A
NtUnmapViewOfSection
0xE7
N/A
NtVdmControl
0xE8
N/A
NtWaitForMultipleObjects
0xE9
N/A
NtWaitForSingleObject
0xEA
N/A
NtWaitHighEventPair
0xEB
N/A
NtWaitLowEventPair
0xEC
N/A
NtWriteFile
0xED
N/A
NtWriteFileGather
0xEE
N/A
NtWriteRequestData
0xEF
N/A
NtWriteVirtualMemory
0xF0
N/A
NtCreateChannel
0xF1
N/A
NtListenChannel
0xF2
N/A
NtOpenChannel
0xF3
N/A
NtReplyWaitSendChannel
0xF4
N/A
NtSendWaitReplyChannel
0xF5
N/A
NtSetContextChannel
0xF6
N/A
NtYieldExecution
0xF7
N/A
Russinoich和Cogewell采用的最重要的一步是:编写一个内核模式的设备驱动程序来安装和维护Native API Hook 。因为,用户模式下的模块没有修改系统服务描述符表的权限 。就像第四章中的Spy驱动程序,这是一种多少有些特殊的驱动程序,因为它不处理通常的I/O请求 。它只是导出一个简单的设备I/O控制(IOCTL)接口,以让用户模式下的代码访问它收集到的数据 。该驱动程序的主要任务是修改KiServiceTable、拦截并记录所选的Windows 2000 Native API调用 。尽管这种方法很简单而且优雅,它还是有些让人担心 。它的简单使我想起了在DOS时代,hook一个系统服务只需要简单的修改处理器的中断向量表中的指针 。任何知道如何编写基本的Windows 2000内核驱动程序的人都可以hook任意的NT系统服务而不需要而外的努力 。

推荐阅读