驱动内核函数汇总
文件头
1. ntimage.h 内核有关结构体
关于内存的函数
1. ProbeForRead(),ProbeForWrite() 探测是否可读或可写
关于I/O通信的函数
1. IoCreateDevice 创建设备
2. IoDeleteDevice 删除设备
3. IoCreateSymbolicLink 创建符号链接
4. IoDeleteSymbolicLink 删除符号链接
5. IoGetCurrentIrpStackLocation 得到当前栈中的Irp请求
6. IoCompleteRequest I/O 请求处理完毕
7. IoAttachDeviceToDeviceStackSafe 将设备对象添加到设备栈的最顶层
8. IoDetachDevice 卸载设备
9. IoSkipCurrentIrpStackLocation
10. 通过设备名获取设备指针(可以再找到驱动再找到派发函数):
NTSTATUS IoGetDeviceObjectPointer( _In_ PUNICODE_STRING ObjectName,_In_ ACCESS_MASK DesiredAccess,_Out_ PFILE_OBJECT *FileObject, _Out_ PDEVICE_OBJECT *DeviceObject);
关于字符串函数
1. PsGetCurrentProcessId() 获取当前进程id
2. NTSTATUS PsLookupThreadByThreadId( _In_ HANDLE ThreadId, _Outptr_ PETHREAD *Thread);
关于进程和线程的函数
1. PsCreateSystemThread 创建线程
2. KeDelayExecutionThread 内核延时(线程睡眠)
3. PsGetCurrentProcessId 获取当前进程id
4. NTSTATUS PsLookupProcessByProcessId( IN HANDLE ProcessId, OUT PEPROCESS* Process); 通过进程id来获取_PROCESS结构体
5. NTSTATUS PsLookupThreadByThreadId( _In_ HANDLE ThreadId, _Outptr_ PETHREAD *Thread); 通过线程id来获取_ETHREAD结构体
6. PPEB NTAPI PsGetProcessPeb(PEPROCESS eprocess);通过Eprocess获取PEB(未导出函数,自己声明)
7. NTSTATUS SeLocateProcessImageName(_Inout_ PEPROCESS Process, _Outptr_ PUNICODE_STRING *pImageFileName ); 获取进程名称
8. KeStackAttachProcess 附加进程
1. MmGetSystemRoutineAddress 获取内核模块和硬件模块的函数