下你所需,载你所想!
汇集开发技术源码资料

恢复SSDT驱动代码LianXue驱动开发模版

: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,从而实现对一些关心的系统动作进行过滤、监控的目的。

恢复SSDT驱动代码LianXue驱动开发模版

热门推荐

相关文章