SYSTEM_HANDLE_INFORMATION

本文详细解析了Windows系统中句柄的内部结构和工作原理,包括SYSTEM_HANDLE_INFORMATION和SYSTEM_HANDLE_TABLE_ENTRY_INFO等关键数据结构,以及如何通过NtQuerySystemInformation函数获取系统内所有进程的句柄信息。
复制代码
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原理分析之句柄处理【原创】

EhLib 8.0 Build 8.0.023 Pro Edition FullSource for D7-XE8 亲测可用,含全部源码及 Demo The Library contains components and classes for Borland Delphi versions 7, 9, Developer Studio 2006, Delphi 2007, Embarcadero RAD Studio 2009-XE8, Lazarus. TABLE OF CONTENTS ----------------- Overview Installation Library Installation Help Demonstration Programs Registering and Prices Other information About author Where to start. ------------------- Read about EhLib for Lazarus in the file - Lazarus\readme.txt Start overview of the library with the main Demo project .\Demos\Bin\MainDemo.Exe. (Compiled Demo files are available in the Evaluation version of the library) Then you can read a summary of the new features and changes in the file history-eng.html. More detail about new features can be found in the file - About EhLib 8 Eng.doc To install a new version of the library in the IDE, use the installation program in .\Installer\EhLibInstaller.exe Overview -------- The Library contains several components and objects. TDBGridEh component TDBGridEh provides all functionality of TDBGrid and adds several new features as follows: Allows to select records, columns and rectangle areas. Special titles that can correspond to several/all columns. Footer that is able to show sum/count/other field values. Automatic column resizing to set grid width equal client width. Ability to change row and title height. Allows automatic broken of a single line long title and data row to a multiline. Title can act as button and, optionally show a sort marker. Automatically sortmarking. Ability to truncate long text with ellipsis. Lookup list can show several fields. Incremental search in lookup fields. Frozen columns. DateTime picker support for TDateField and TDateTimeField. Allows to show bitmaps from TImageList depending on field value. Allows to hide and track horizontal or vertical scrollbars. Allows to hide columns. Allows to show 3D fr
FastReport 是一款流行的报表生成器,被广泛用于 Delphi 环境中,用于创建复杂的数据敏感报表。VCL 是 Visual Component Library 的缩写,它是 Delphi 的一个核心组件库,允许开发者快速构建图形用户界面。FastReport VCL Enterprise 是这一系列报表工具的高级版本,它提供了更多的特性和功能,以满足企业级应用的需要。在本文中,我们将探讨 FastReport VCL Enterprise v2024.1 版本,特别是针对 Delphi 10.4 到 Delphi 12 Athens 的版本。这一特定版本的 FastReport 支持 Delphi 的最新稳定版本,为 Delphi 开发者提供了一个强大的报表解决方案。此版本还包含了源代码,这使得开发者能够根据需要定制和扩展报表的功能。FastReport VCL Enterprise 提供的功能包括但不限于:1. 支持多种数据源:它能够处理来自数据库、文件、XML、JSON等多种数据源的数据。2. 强大的报表设计工具:提供了一个可视化的报表设计器,开发者可以轻松设计出复杂的报表布局。3. 高级报表类型:支持包括主从报表、交叉报表、图表报表等高级报表类型。4. 支持打印和导出功能:可以将报表导出为 PDF、HTML、Excel、Word 等格式,也可以直接打印。5. 脚本支持:内置支持脚本编程,开发者可以编写脚本来控制报表的生成和数据处理。6. 强大的图表功能:内置图表引擎,支持生成各类统计图表。为了在 Delphi 10.4-12 Athens 中使用 FastReport VCL Enterprise v2024.1,开发者需要将该软件包集成到他们的项目中。这通常涉及到在项目中添加相应的库文件,配置组件选项,并在应用程序代码中使用 Fa
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值