驱动学习用到的API
ObOpenObjectByPointer 函数打开由指针引用的对象,并返回该对象的句柄
ObReferenceObjectByPointer 例程递增给定对象的指针引用计数。
ObDereferenceObject 例程递减给定对象的引用计数并执行保留检查
ObReferenceObjectByHandle 例程在对象句柄上提供访问验证,如果可以授予访问权限,则返回指向对象的正文的相应指针。
NTSTATUS ObReferenceObjectByName ( 通过一个名字获得一个对象的指针(未公开)
__in PUNICODE_STRING ObjectName,
__in ULONG Attributes,
__in_opt PACCESS_STATE AccessState,
__in_opt ACCESS_MASK DesiredAccess,
__in POBJECT_TYPE ObjectType,
__in KPROCESSOR_MODE AccessMode,
__inout_opt PVOID ParseContext,
__out PVOID *Object );
NTSTATUS ObOpenObjectByName( 未公开
_In_ POBJECT_ATTRIBUTES ObjectAttributes,
_In_ POBJECT_TYPE ObjectType,
_In_ KPROCESSOR_MODE AccessMode,
_Inout_opt_ PACCESS_STATE AccessState,
_In_opt_ ACCESS_MASK DesiredAccess,
_Inout_opt_ PVOID ParseContext,
_Out_ PHANDLE Handle );
IoEnumerateDeviceObjectList 例程枚举驱动程序下的所有的设备对象列表
PsSetLoadImageNotifyRoutine 例程注册驱动程序提供的回调,每当映像 ((例如,DLL 或 EXE) )加载 (或映射到内存) 时,该回调随后会收到通知。
PsLookupThreadByThreadId 例程接受线程的线程 ID,并将引用指针返回到线程的 ETHREAD 结构。
ZwQueryInformationProcess 检索有关指定进程的信息
ZwCurrentProcess 宏返回当前进程的句柄。
ZwDuplicateObject 例程创建一个句柄,该句柄与指定的源句柄重复
NTSTATUS ZwOpenThread( 未公开
_Out_ PHANDLE ThreadHandle,
_In_ ACCESS_MASK DesiredAccess,
_In_ POBJECT_ATTRIBUTES ObjectAttributes,
_In_opt_ PCLIENT_ID ClientId );
wcsrchr 扫描字符串以查找某个字符的末次出现位置
_wcsicmp 执行不区分大小写的字符串比较
KiSystemStartup NT内核的入口函数
KiInitializePcr
KeStartAllProcessors 函数来初始化其他CPU
KiInitProcessor
__declspec(naked) 裸函数 声明