ssdt全称为System Services Descriptor Table,中文为系统服务描述符表,ssdt表就是把ring3的Win32 API和ring0的内核API联系起来。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。
ssdt通过修改此表的函数地址可以对常用windows函数进行hook,从而实现对一些核心的系统动作进行过滤、监控的目的。一些HIPS、防毒软件、系统监控、注册表监控软件往往会采用此接口来实现自己的监控模块,
目前极个别病毒确实会采用这种方法来保护自己或者破坏防毒软件,但在这种病毒进入系统前如果防毒软件能够识别并清除它将没有机会发作。所以删除不会对电脑造成影响。
扩展资料:
SSDT的作用:
1、启动、停止、暂停、恢复或禁用远程和本地计算机服务。
2、管理本地和远程计算机上的服务。
3、设置服务失败时的故障恢复 *** 作。例如,重新自动启动服务或重新启动计算机。
4、为特定的硬件配置文件启用或禁用服务。
5、查看每个服务的状态和描述。
参考资料来源:
百度百科-SSDT
百度百科-系统服务
在WIN64下的KeServiceDescriptorTable是没有被导出,所以我们只能动态的查找它的地址。具体 *** 作步骤如下:第1步先把ntdll 读入内存。查看内存,开始动态查找 进入GetFunctionAddress,先找到ssdt,进入GetExportSsdtIndex,进入GetExportOffset找到函数对应在ntdll中的偏移。(函数代码起始地址),找到函数名,找到函数偏移,查看反汇编,通过汇编特征算出index,就可以找到索引了。
源码:https://github.com/haidragon/DriverInjectDll
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)