SSDt表与ShadowSSDT表的查看.

一丶SSDT表

1.什么是SSDT表

SSDT表示系统服务表,我们ring3调用的很多函数都会调用这个SSDT表

2.查看步骤

1.使用 x命令

前提需要加载好符号.

x nt!kes*des*table*

64位内核开发第四讲,查看SSDT表与showSSDT表-LMLPHP

KeServiceDescriptorTableShadowShadowSSDT表

KeServiceDescriptorTableSSDT表.

2.查看地址的值

使用dd命令可以查看这个地址里面值.如下.

64位内核开发第四讲,查看SSDT表与showSSDT表-LMLPHP

首先可以看选中的位置.这个是SSDT表的起始地址. 后面*0x11C

是这个表的个数

我们可以使用dds命令来查看这个表.

dds命令可以看第三讲.关于windbg调试命令

dds Address L11C

这个命令的意思就是显示地址里面值指向的地址. 以4个字节显示.

显示如下:

64位内核开发第四讲,查看SSDT表与showSSDT表-LMLPHP

如果你有符号.则可以看到这些地址里面后面指向的函数名

可以使用 uf 来反汇编这个函数的所有汇编

64位内核开发第四讲,查看SSDT表与showSSDT表-LMLPHP

二丶ShadowSSDT表

1.什么是ShadowSSDT表

ring3的所有GUI会调用的到这个表格中.

2.如何查看.

System系统进程是没有加载ShadowSSDT表的.所以我们必须切换到调用GUI的进程空间中查看.

1.在系统中运行 mspaint 画图工具

2.在windbg中中断.

3.输入命令.查看系统所有简要信息

!process 0 0

4.找到mspaint的EPROCESS结构.切换到这个进程上下文

.process /p EPROCESSADDRESS

5.使用x命令查找ShadowsSSDT

x nt!*kes*des*table*

如下:

64位内核开发第四讲,查看SSDT表与showSSDT表-LMLPHP

6.查看shodowSSDT

64位内核开发第四讲,查看SSDT表与showSSDT表-LMLPHP

shodowSSDT 跟SSDT挨着.上面查看SSDT的时候 shodowSSDT没有加载

所以没有.所以现在看一看下.如上图. 有起始地址.跟大小.

不管是SSDT还是shodowSSDT表.都是有这个表的大小.

在32位下.函数地址是4个字节. 所以用表的大小 / 4 = 函数个数.

64位内核开发第四讲,查看SSDT表与showSSDT表-LMLPHP

这个表中的函数都是做绘图用的.

三丶工具介绍

Process Monitor

工具是进程监控工具.可以监视所有进程活动.

现在的火绒剑也是可以.

如下图;

微软下载地址:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/procmon

工具界面

64位内核开发第四讲,查看SSDT表与showSSDT表-LMLPHP

可以设置过滤器.进行过滤.比如我只想看进程创建.如何操作.

Process Explorer

64位内核开发第四讲,查看SSDT表与showSSDT表-LMLPHP

微软下载地址:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer

这个工具则可以实时查看进程.并且可以挂起进程.等操作进程.

05-11 22:55