Windows内核新手上路1——挂钩SSDT
这个系列记录学习我学习windows内核的点点滴滴,高手请直接无视。
文章核心内容:挂钩SSDT中函数列NtOpenProcess,NtDuplicateObject,NtCreateThread,NtOpenThread,NtWriteVirtualMemory,过滤进程操作来保护目标进程空间。
SSDT的全称是System Services Descriptor Table,系统服务描述符表。这个表把ring3的Win32 API和ring0的内核API联系起来。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。
SSDT管的是与系统相关的函数(kernel32.dll、ntdll.dll)。通过修改此表的函数地址可以对常用windows函数及API进行hook,从而实现对一些关心的系统动作进行过滤、监控的目的。一些HIPS、防毒软件、系统监控、注册表监控软件往往会采用此接口来实现自己的监控模块。
SSDT结构: