:5.652KB : :1 :2019-11-12 22:21:00
SSDT到底是什么呢?打一个比方,SSDT相当于系统内部API的指向标,作用就是告诉系统,需要调用的API在什么地方。
SSDT系统服务描述符表。这个表就是一个把ring3的Win32 API和ring0的内核API联系起来。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。
_Read_DRIVER_OBJECT (DeviceObj, DriverObject, 168)
DeviceObj.MajorFunction [1] = &DispatchCreateClose
DeviceObj.MajorFunction [3] = &DispatchCreateClose
DeviceObj.MajorFunction [15] = &驱动通信
DeviceObj.DriverUnload = &驱动卸载
_Write_DRIVER_OBJECT (DriverObject, DeviceObj, 168)
RtlInitAnsiString (asDeviceName, “\Device\” + #驱动通信名称)
RtlAnsiStringToUnicodeString (usDeviceName, asDeviceName, 真)
.如果真 (IoCreateDevice (DriverObject, 0, usDeviceName, 34, 256, 假, pDevObj) < 0)
RtlFreeUnicodeString (usDeviceName)
返回 (#STATUS_UNSUCCESSFUL)
.如果真结束
.如果 (IoIsWdmVersionAvailable (1, 16))
RtlInitAnsiString (asSymlinkName, “\DosDevices\Global\” + #驱动通信名称)
.否则
RtlInitAnsiString (asSymlinkName, “\DosDevices\” + #驱动通信名称)
.如果结束
RtlAnsiStringToUnicodeString (usSymlinkName, asSymlinkName, 真)
status = IoCreateSymbolicLink (usSymlinkName, usDeviceName)
RtlFreeUnicodeString (usDeviceName)
RtlFreeUnicodeString (usSymlinkName)
.如果真 (status < 0)
IoDeleteDevice (pDevObj)
返回 (#STATUS_UNSUCCESSFUL)
.如果真结束
返回 (#STATUS_SUCCESS)
通过修改此表的函数地址可以对常用windows函数及API进行hook,从而实现对一些关心的系统动作进行过滤、监控的目的。
02-17会员管理插件源码
02-16动态创建菜单与响应事件源码,菜单编辑器
02-09画板快捷启动3.2源码修改版
02-09王者荣耀战力小程序源码分享
02-09简单的指定颜色抠图源码
02-05WinLicense授权SDK源码
02-05文本逐字分割源码及优化历程
02-05易语言调用cmd命令并编辑框显示执行结果
09-07C++的string的实现源码分析
10-15易语言word循环插入文字 图片工具源码