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原理分析之句柄处理【原创】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值