• 【转】SYSTEM_HANDLE_INFORMATION


    typedef struct _SYSTEM_HANDLE_INFORMATION{
        ULONG                ProcessId;
        UCHAR                ObjectTypeNumber;
        UCHAR                Flags;
        USHORT               Handle;
        PVOID                Object;
        ACCESS_MASK          GrantedAccess;
        /*
        ProcessId:           进程标识符
        ObjectTypeNumber;    打开的对象的类型
        Flags:               句柄属性标志
        Handle:              句柄数值,在进程打开的句柄中唯一标识某个句柄
        Object:              这个就是句柄对应的EPROCESS的地址
        GrantedAccess:       句柄对象的访问权限
        */
    } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
    
    
    ObjectTypeNumber的定义
    // 枚举对象类型
    typedef enum _SYSTEM_HANDLE_TYPE
    {
        OB_TYPE_UNKNOWN,         // 0,未知类型
        OB_TYPE_TYPE,            // 1,类型
        OB_TYPE_DIRECTORY,       // 2,目录
        OB_TYPE_SYMBOLIC_LINK,   // 3,符号链接
        OB_TYPE_TOKEN,           // 4,安全
        OB_TYPE_PROCESS,         // 5,进程
        OB_TYPE_THREAD,          // 6,线程
        OB_TYPE_JOB,             // 7,Job
        OB_TYPE_DEBUG_OBJECT,    // 8,调试对象
        OB_TYPE_EVENT,           // 9,事件
        OB_TYPE_EVENT_PAIR,      // 10,事件
        OB_TYPE_MUTANT,          // 11,互斥体
        OB_TYPE_CALLBACK,        // 12,回调
        OB_TYPE_SEMAPHORE,       // 13,信号量
        OB_TYPE_TIMER,           // 14,时钟
        OB_TYPE_PROFILE,         // 15,Profile
        OB_TYPE_KEYED_EVENT,     // 16,键盘事件
        OB_TYPE_WINDOWS_STATION, // 17,fixed
        OB_TYPE_DESKTOP,         // 18,桌面
        OB_TYPE_SECTION,         // 19,共享内存区
        OB_TYPE_KEY,             // 20,键值
        OB_TYPE_PORT,            // 21,端口
        OB_TYPE_WAITABLE_PORT,   // 22,可等待端口
        OB_TYPE_ADAPTER,         // 23,适配器
        OB_TYPE_CONTROLLER,      // 24,控制器
        OB_TYPE_DEVICE,          // 25,设备
        OB_TYPE_DRIVER,          // 26,驱动
        OB_TYPE_IOCOMPLETION,    // 27,fixed
        OB_TYPE_FILE,            // 28,内存映射文件
        OB_TYPE_WMIGUID          // 29,fixed
    } SYSTEM_HANDLE_TYPE;
     
    typedef enum _MEMORY_INFORMATION_CLASS
    {
        MemoryBasicInformation,
        MemoryWorkingSetList,
        MemorySectionName,
        MemoryBasicVlmInformation
    } MEMORY_INFORMATION_CLASS, *PMEMORY_INFORMATION_CLASS;
     
    typedef struct _OBJECT_TYPE_INFORMATION
    {
        UNICODE_STRING TypeName;
        ULONG TotalNumberOfHandles;
        ULONG TotalNumberOfObjects;
    } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
     
    typedef struct _OBJECT_ALL_INFORMATION
    {
        ULONG NumberOfObjects;
        OBJECT_TYPE_INFORMATION ObjectTypeInformation[1];
    } OBJECT_ALL_INFORMATION, *POBJECT_ALL_INFORMATION;
    
    

    使用时应注意,返回到缓冲区的首先是一个ULONG类型的数据,表示有多少数组

      使用NtQuerySystemInformation函数的SystemHandleInformation=16号功能.
      其相关结构定义如下:
      typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO{
          USHORT UniqueProcessId;
          USHORT CreatorBackTraceIndex;
          UCHAR ObjectTypeIndex;
          UCHAR HandleAttributes;
          USHORT HandleValue;
          PVOID Object;
          ULONG GrantedAccess;
      } SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO;
    
      typedef struct _SYSTEM_HANDLE_INFORMATION{
          ULONG NumberOfHandles;
          SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
      } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
      该功能号获取系统内所有进程的句柄放在Handles里,个数由NumberOfHandles标识,
      每个句柄由UniqueProcessId来区分属于那个不同的进程.
                                                  

                                         -------《ProcessExplorer原理分析之句柄处理【原创】

  • 相关阅读:
    学用 ASP.Net 之 "字符串" (5): StringBuilder 类
    学用 ASP.Net 之 System.DateTime 结构
    学用 ASP.Net 之 "字符串" (4): string 类的扩展方法
    学用 ASP.Net 之 System.Char 结构
    学用 ASP.Net 之 System.TimeSpan 结构
    学用 ASP.Net 之 "字符串" (6): StringInfo 类
    学用 ASP.Net 之 System.Math 类
    学用 ASP.Net 之 System.Random 类
    学用 ASP.Net 之 System.Collections.Hashtable 类与 DictionaryEntry 结构
    [收藏]如何开始创业
  • 原文地址:https://www.cnblogs.com/Lthis/p/4200292.html
Copyright © 2020-2023  润新知