/ Windows / 30浏览

执行体方法通用格式定义

Windows 中方法的通用格式定义为:

<Prefix><Operation><Object>
  • Prefix:表示导出例程的内部组件
  • Operation:表示这个方法的行为,怎么操作对象或者资源
  • Object:标识要操作的对象或资源

常见的 Prefix:

PrefixComponent
AlpcAdvanced Local Procedure Calls
CcCommon Cache
CmConfiguration manager
CsrClient Server Runtime- communication with the Windows Subsystem process (Csrss.exe) functions.
DbgKernel debug support
DbgkDebugging Framework for user mode
EmErrata manager
EtwEvent Tracing for Windows
ExExecutive support routines
FsRtlFile System Runtime Library
HvHive library
HvlHypervisor library
IoI/O manager
KdKernel debugger
KeKernel
KseKernel Shim Engine
LsaLocal Security Authority
MmMemory manager
NtNT system services (accessible from user mode through system calls)
ObObject manager
PfPrefetcher
PoPower manager
PoFxPower framework
PpPnP manager
PpmProcessor power manager
PsProcess support
RtlRun-time library
SeSecurity Reference Monitor
SmStore Manager
TmTransaction manager
TpThread pool related functions
TtmTerminal timeout manager
VfDriver Verifier
VslVirtual Secure Mode library
WdiWindows Diagnostic Infrastructure
WfpWindows FingerPrint
WheaWindows Hardware Error Architecture
WmiWindows Management Instrumentation
ZwMirror entry point for system services (beginning with Nt) that sets previous access mode to kernel, which eliminates parameter validation, because Nt system services validate parameters only if previous access mode is user

Ntxxxx() 和 Zwxxxx() 的区别

用户模式下(ntdll.dll):

完全一致

内核模式下(ntoskrnl.exe):

  • NT 函数是存放在 SSDT 表中的,用来响应用户态的请求或者响应内核态 Zw 函数的请求,即无论走用户态路径还是内核态路径都是调用NT函数
  • Zw*->Nt*(Zw函数会调用Nt)
  • 内核应用只能调用 Zw*,不要直接调用 Nt*。Zw* 会自动设置 PreviousMode 为内核模式,就可以无需验证参数,直接调用。所以调用前最好提前检查好用户态传过来的参数。

参考:

如何通过 C++ 实时监听 ETW 事件
如何通过 C++ 实时监听 ETW 事件
【译】调查并确定 Windows 运行速度变慢问题
【译】调查并确定 Windows 运行速度变慢问题
【译】丢失的 WPA 文档 —— 磁盘使用
【译】丢失的 WPA 文档 —— 磁盘使用
【译】丢失的 WPA 文档 —— CPU 调度
【译】丢失的 WPA 文档 —— CPU 调度
【译】丢失的 WPA 文档 —— CPU 采样
【译】丢失的 WPA 文档 —— CPU 采样
如何通过 PDH(Performance Data Helper) 获取性能计数器的值

0

  1. This post has no comment yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注