ssdt_表_遍历

来源:互联网 发布:java 安卓开发 编辑:程序博客网 时间:2024/06/05 19:42
#include"ntddk.h"  #pragma pack(1) //写这个内存以一字节对齐 如果不写是以4字节的对齐的  typedef struct ServiceDescriptorEntry {//这个结构就是为了管理这个数组而来的 内核api所在的数组 才有这个结构的 这个是ssdt  unsigned int *ServiceTableBase;//就是ServiceTable ssdt数组  unsigned int *ServiceCounterTableBase; //仅适用于checked build版本 无用  unsigned int NumberOfServices;//(ServiceTableBase)数组中有多少个元素 有多少个项  unsigned char *ParamTableBase;//参数表基址 我们层传过来的api的参数 占用多少字节 多大  } ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;#pragma pack(1)  _declspec(dllimport) ServiceDescriptorTableEntry_t KeServiceDescriptorTable;//(名字不要写错)  VOID xiezai1(PDRIVER_OBJECT qudongduixiang){KdPrint(("已经执行到了 驱动卸载历程\n"));}NTSTATUS DriverEntry(PDRIVER_OBJECT qudongduixiang, PUNICODE_STRING zhucebiao1){int j = KeServiceDescriptorTable.NumberOfServices;for ( int i = 0; i <j ;i++){KdPrint(("%d %x", i, KeServiceDescriptorTable.ServiceTableBase[i]));}qudongduixiang->DriverUnload = xiezai1;return STATUS_SUCCESS;}

0 0
原创粉丝点击