windows 内核函数命名规律
2012-12-27 19:59
155 查看
windows内核都是__stdcall
windows内核的前缀有:Nt,zW,Ex,Ke,Hal,Ob ,Mm,Ps,Se,Io,Fs,Cc,Cm ,Pp,Rtl,Ndis,Wdf,KiEtw,Csr,Ldr,Dbg,Pfx
主要的前缀有:
Zw:Zw 和同名的 Nt 函数具有相同的功能,中间是从 Zw 到 Nt 函数的简单跳转。本系列内核函数用于文件和注册表方面的操作,比如文件操作、注册表操作、访问进程、事件操作、令牌操作、进程操作和端口操作等。
Ex:管理层,Ex 是 Executive 的开头两个字母。
Ke:核心层,Ke 是 Kernel 的开头两个字母。
Hal:硬件抽象层,Hal 是 Hardware Abstranction Layer 的缩写。
Ob:对象管理,Ob 是 Object 的开头两个字母。
Mm:内存管理,Mm 是 Memory Manager 的缩写。
Ps:进程(线程)管理,Ps 表示Process。
Se:安全管理,Se 是 Security 的开头两个字母。
Io:I/O管理。
Fs:文件系统,Fs 是 File System 的缩写。
Cc:文件缓存管理,Cc 表示 Cache。
Cm:系统配置管理,Cm 是 Configuration Manager 的缩写。
Pp:“即插即用”管理,Pp 表示 PnP。
Rtl:运行时程序库,Rtl 是 Runtime Library 的缩写。本系列内核函数用于运行时库,以Rtl为前缀的函数可以完成多种操作,例如字符串、线程、资源、临界区、安全对象的初始化和使用,内存、进程异常和数据类型的处理,还用于完成定时器、堆、IPv4和IPv6方面的操作,以及压缩和解压缩等。
Ndis:与NDIS网络驱动开发相关的函数。
Wdf:开发WDF驱动相关的函数都是以 Wdf 开头。
KiEtw:本系列内核函数用于系统内核,这些函数只能从内核的内部进行调用,常用的有:KiUserCallbackDispatcher、KiRaiseUserExceptionDispatcher、KiUserApcDispatcher、KiUserExceptionDispatcher等。
Csr系列:此系列函数用于客户机和服务器运行时,如果您想拦截客户机/服务器方面的操作,那么就需要对Csr系列内核函数做进一步的了解。常见的有:CsrClientCallServer、CsrCaptureMessageBuffer、CsrConnectClientToServer和CrsNewThread等。
Ldr系列:本系列内核函数用于加载程序管理器,如果你打算拦截加载程序的话,那么请进一步考察这组以Ldr为前缀的函数,常用的有:LdrInitializeThunk、LdrLockLoaderLock、LdrUnlockLoaderLock、LdrGetDllHandle、LdrGetProcedureAddress等。
Dbg系列:本系列内核函数用于调试管理,如果打算拦截调试操作的话,那么请进一步考察这组以Dbg为前缀的函数,常用的函数包括:、DbgBreakPoint、DbgUserBreakPoint、DbgPrint和DbgUiConnectToDbg等。
Etw系列:本系列内核函数用于追踪窗口事件,如果你打算拦截追踪之类的操作的话,那么请进一步考察这组以Etw为前缀的函数。常用的函数包括:EtwTraceEvent、EtwEnableTrace、EtwGetTraceEnableLevel和EtwGetTraceEnableFlags等。
Pfx系列:本系列内核函数用于ANSI字符串操作,如果你打算拦截ASNI串表方面的操作的话,就需要进一步了解这些函数。常用的包括:PfxInitialize、PfxRemovePrefix、PfxInsertPrefix、PfxFindPrefix等。
不过并非所有函数名都带有这样的前缀,对前缀的使用也并非非常严格。
例如:核心层函数名的前缀本应该是Ke,但实际上有不少核心层函数名的前缀是 Ki,这些函数大都是与中断有关的比较底层的函数。
有时候还在函数名的前缀后面加上小写字母 f,表示这个函数是快速调用函数。
例如:NTKERNELAPI LONG_PTR FASTCALL ObfDereferenceObject(IN
PVOID Object);
这里的类型说明 FASTCALL 向编译工具表明这是个快速调用函数,函数名前缀加
f 则使人一看见函数名就知道这个函数是个快速调用函数,一般的函数调用是通过堆栈传递参数的,而快速调用函数则通过 ECX 等寄存器传递参数,因为避免了几个堆栈操作而使效率有所提高。
这里的 FASTCALL 是必须的,否则编译工具不知道应该通过寄存器传递参数,而在函数名中加
f 则只是为了增加程序的可读性。
windows内核的前缀有:Nt,zW,Ex,Ke,Hal,Ob ,Mm,Ps,Se,Io,Fs,Cc,Cm ,Pp,Rtl,Ndis,Wdf,KiEtw,Csr,Ldr,Dbg,Pfx
主要的前缀有:
Zw:Zw 和同名的 Nt 函数具有相同的功能,中间是从 Zw 到 Nt 函数的简单跳转。本系列内核函数用于文件和注册表方面的操作,比如文件操作、注册表操作、访问进程、事件操作、令牌操作、进程操作和端口操作等。
Ex:管理层,Ex 是 Executive 的开头两个字母。
Ke:核心层,Ke 是 Kernel 的开头两个字母。
Hal:硬件抽象层,Hal 是 Hardware Abstranction Layer 的缩写。
Ob:对象管理,Ob 是 Object 的开头两个字母。
Mm:内存管理,Mm 是 Memory Manager 的缩写。
Ps:进程(线程)管理,Ps 表示Process。
Se:安全管理,Se 是 Security 的开头两个字母。
Io:I/O管理。
Fs:文件系统,Fs 是 File System 的缩写。
Cc:文件缓存管理,Cc 表示 Cache。
Cm:系统配置管理,Cm 是 Configuration Manager 的缩写。
Pp:“即插即用”管理,Pp 表示 PnP。
Rtl:运行时程序库,Rtl 是 Runtime Library 的缩写。本系列内核函数用于运行时库,以Rtl为前缀的函数可以完成多种操作,例如字符串、线程、资源、临界区、安全对象的初始化和使用,内存、进程异常和数据类型的处理,还用于完成定时器、堆、IPv4和IPv6方面的操作,以及压缩和解压缩等。
Ndis:与NDIS网络驱动开发相关的函数。
Wdf:开发WDF驱动相关的函数都是以 Wdf 开头。
KiEtw:本系列内核函数用于系统内核,这些函数只能从内核的内部进行调用,常用的有:KiUserCallbackDispatcher、KiRaiseUserExceptionDispatcher、KiUserApcDispatcher、KiUserExceptionDispatcher等。
Csr系列:此系列函数用于客户机和服务器运行时,如果您想拦截客户机/服务器方面的操作,那么就需要对Csr系列内核函数做进一步的了解。常见的有:CsrClientCallServer、CsrCaptureMessageBuffer、CsrConnectClientToServer和CrsNewThread等。
Ldr系列:本系列内核函数用于加载程序管理器,如果你打算拦截加载程序的话,那么请进一步考察这组以Ldr为前缀的函数,常用的有:LdrInitializeThunk、LdrLockLoaderLock、LdrUnlockLoaderLock、LdrGetDllHandle、LdrGetProcedureAddress等。
Dbg系列:本系列内核函数用于调试管理,如果打算拦截调试操作的话,那么请进一步考察这组以Dbg为前缀的函数,常用的函数包括:、DbgBreakPoint、DbgUserBreakPoint、DbgPrint和DbgUiConnectToDbg等。
Etw系列:本系列内核函数用于追踪窗口事件,如果你打算拦截追踪之类的操作的话,那么请进一步考察这组以Etw为前缀的函数。常用的函数包括:EtwTraceEvent、EtwEnableTrace、EtwGetTraceEnableLevel和EtwGetTraceEnableFlags等。
Pfx系列:本系列内核函数用于ANSI字符串操作,如果你打算拦截ASNI串表方面的操作的话,就需要进一步了解这些函数。常用的包括:PfxInitialize、PfxRemovePrefix、PfxInsertPrefix、PfxFindPrefix等。
不过并非所有函数名都带有这样的前缀,对前缀的使用也并非非常严格。
例如:核心层函数名的前缀本应该是Ke,但实际上有不少核心层函数名的前缀是 Ki,这些函数大都是与中断有关的比较底层的函数。
有时候还在函数名的前缀后面加上小写字母 f,表示这个函数是快速调用函数。
例如:NTKERNELAPI LONG_PTR FASTCALL ObfDereferenceObject(IN
PVOID Object);
这里的类型说明 FASTCALL 向编译工具表明这是个快速调用函数,函数名前缀加
f 则使人一看见函数名就知道这个函数是个快速调用函数,一般的函数调用是通过堆栈传递参数的,而快速调用函数则通过 ECX 等寄存器传递参数,因为避免了几个堆栈操作而使效率有所提高。
这里的 FASTCALL 是必须的,否则编译工具不知道应该通过寄存器传递参数,而在函数名中加
f 则只是为了增加程序的可读性。
相关文章推荐
- Windows的内核函数命名
- AttributeError: 'module' object has no attribute 'fork' 切记:windows内核中没有os.fork()函数
- windows内核原理分析之DPC函数的执行(1)
- Windows内核中的数据结构与函数调用
- Windows 内核 派遣函数
- ARM内核命名规律
- windows笔记-跨越进程边界共享内核对象【命名对象】
- Windows 常见数据类型及变量_常量命名规律
- windows内核原理分析之DPC函数的执行(2)
- Windows Kernel32.dll--内核库函数提供的API
- Windows内核字符串相关函数
- 我谈windows函数的返回值规律
- 观察Windows的内核模块、数据结构和函数
- 白话windows内核对象共享之命名对象
- Windows内核分析之一 —— 内核入口函数
- windows内核原理分析之DPC函数的执行(3)
- windows 常见数据类型_常量的命名规律
- Windows常见数据类型及变量_常量命名规律
- Windows内核学习笔记(二)-- IoCallDriver函数与PoCallDriver函数
- 用命名内核对象防止windows同时运行两个程序