免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

Win7 枚举内核对象类型

DriverEntry.c
  1. #include "ntddk.h"

  2. #define PAGEDCODE code_seg("PAGE")
  3. #define LOCKEDCODE code_seg()
  4. #define INITCODE code_seg("INIT")

  5. #define PAGEDDATA data_seg("PAGE")
  6. #define LOCKEDDATA data_seg()
  7. #define INITDATA data_seg("INIT")


  8. #pragma PAGEDCODE
  9. VOID MyDriverUnload(IN PDRIVER_OBJECT pDriverObject)
  10. {

  11.         KdPrint(("DriverEntry unLoading...\n"));

  12. }



  13. #pragma INITCODE
  14. NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING RegistryPath)
  15. {
  16.         NTSTATUS status = STATUS_SUCCESS;

  17.         ULONG u_Index;
  18.         PVOID pfn_ObGetObjectType;
  19.         PULONG ObTypeIndexTable;

  20.         UNICODE_STRING str_func_name;
  21.         RtlInitUnicodeString(&str_func_name, L"ObGetObjectType");

  22.         pfn_ObGetObjectType = MmGetSystemRoutineAddress(&str_func_name);
  23.         if (!MmIsAddressValid(pfn_ObGetObjectType))
  24.         {
  25.                 KdPrint(("error!\n"));
  26.         }
  27.         else
  28.         {
  29.                 ObTypeIndexTable = *(PULONG *)((ULONG)pfn_ObGetObjectType + 15);
  30.                 u_Index = 2;

  31.                 while (ObTypeIndexTable[u_Index])
  32.                 {
  33.                         KdPrint(("ObTypeIndexTable[%d]:%wZ\n", u_Index, ObTypeIndexTable[u_Index] + 8));
  34.                         u_Index++;
  35.                 }
  36.         }




  37.         pDriverObject->DriverUnload = MyDriverUnload;
  38.         return status;
  39. }
复制代码

返回列表