zheng 发表于 2011-8-7 13:14:13

今天分析了一个驱动保护,基本已经搞定了

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 *****

waizl1986 发表于 2011-9-7 10:21:53

看看怎么样子

akenabc123 发表于 2011-10-26 16:33:34

看看怎么样子

wu0you 发表于 2011-11-19 10:22:34

定了 谢谢楼主

xiaoli 发表于 2011-11-19 10:59:35

顶 大家一起学习 我是新手

zyitt 发表于 2012-3-5 23:47:11

看帖,回帖啊。。。

ming951010 发表于 2012-5-5 10:19:08

看看学习下~!!

zhangchenggu 发表于 2012-8-11 00:24:17

哪的好像看过

guodong 发表于 2012-8-15 12:26:25

看看看上的发生的

Rookietp 发表于 2014-10-10 21:29:07

{:3_59:}学习下内核函数
页: [1] 2 3
查看完整版本: 今天分析了一个驱动保护,基本已经搞定了