今天分析了一个驱动保护,基本已经搞定了
KeGetCurrentThread 得到KTHREAD结构体KdDebuggerEnabled 判断是否开启debug调试
KdDisableDebugger 关闭 debugger调试
MmIsAddressValid 测试一个地址是否存在(有效)
IoGetCurrentProcess 函数返回当前进程的EPROCESS结构的指针,有了这个值我们就可以从它的开始处逐字节向后搜索“xx”这个字符串了
MmGetSystemRoutineAddress得到导出的函数的实际地址
RtlInitUnicodeString 转换成unicode字符串
ZwClose 关闭句柄
ExAllocatePoolWithTag 内存分配函数
ExFreePoolWithTag
ZwCreateFile 打开文件
IofCompleteRequest 每当完成了一个以IRP为代表的I/O操作请求的时候,就要执行IRP的善后操作
ObfDereferenceObject 用来减少一个内核对象的引用计数的.
PsLookupProcessByProcessId 打开进程
ZwQueryInformationProcess 检查系统调试器是否存在
PsSetCreateProcessNotifyRoutine监视进程创建(xuetr不能启动)
KeAddSystemServiceTable 通过KeAddSystemServiceTable获取
KeServiceDescriptorTable SSTD地址
MmProbeAndLockPages 锁定内存页
IoAllocateMdl 指向这个buf
memset 用来对一段内存空间全部设置为某个字符,一般用于在对定义的字符串初始化为' '或者'\0';
IoFreeMdl 字面理解
MmUnlockPages 取消锁
KeUnstackDetachProcess
KeStackAttachProcess
KeDelayExecutionThread
KeInsertQueueApc --估计用于防止线程挂起
KeInitializeApc APC相关
**** Hidden Message ***** 看看怎么样子 看看怎么样子 定了 谢谢楼主 顶 大家一起学习 我是新手 看帖,回帖啊。。。 看看学习下~!! 哪的好像看过 看看看上的发生的 {:3_59:}学习下内核函数