资源介绍:
.版本 2
.支持库 iext
.程序集 窗口程序集_窗口1, , , ' 本源码来自三叶资源网(www.sanye.cx)
.程序集变量 cpid, 整数型
.子程序 _窗口1_创建完毕
cpid = GetCurrentProcessId ()
编辑框1.内容 = 到文本 (cpid)
.子程序 _按钮1_被单击
.局部变量 pid, 整数型
.局部变量 list, List
.局部变量 i, 整数型
.局部变量 info, SYSTEM_HANDLE_INFORMATION
.局部变量 handle, 整数型
.局部变量 hProcess, 整数型
.局部变量 index, 整数型
超级列表框1.全部删除 ()
pid = 到整数 (编辑框1.内容)
list = 获取系统所有句柄信息 ()
.如果真 (pid ≠ cpid)
hProcess = OpenProcess (#PROCESS_ALL_ACCESS, 假, pid)
.如果真结束
.变量循环首 (0, list.Count () - 1, 1, i)
RtlMoveMemory_SYSTEM_HANDLE_INFORMATION (info, list.GetItem (i), #sizeof_SYSTEM_HANDLE_INFORMATION)
.如果真 (info.ProcessId = pid)
.如果 (pid = cpid)
handle = info.Handle
.否则
DuplicateHandle (hProcess, info.Handle, GetCurrentProcess (), handle, #DUPLICATE_SAME_ACCESS, 假, #DUPLICATE_SAME_ACCESS)
.如果结束
index = 超级列表框1.插入表项 (, 获取句柄类型 (handle), , , , )
超级列表框1.置标题 (index, 1, 获取句柄名 (handle))
超级列表框1.置标题 (index, 2, 到文本 (info.Handle))
超级列表框1.置标题 (index, 3, 到文本 (info.Object))
超级列表框1.置标题 (index, 4, 到文本 (info.ObjectTypeNumber))
超级列表框1.置标题 (index, 5, 到文本 (获取句柄引用数 (handle)))
.如果真 (pid ≠ cpid)
CloseHandle (handle)
.如果真结束
.如果真结束
.变量循环尾 ()
.如果真 (hProcess ≠ 0)
CloseHandle (hProcess)
.如果真结束
.子程序 获取系统所有句柄信息, List
.局部变量 len, 整数型
.局部变量 buffer, 字节集
.局部变量 status, 整数型
.局部变量 list, List
len = 16534 ' 0x4096
.循环判断首 ()
buffer = 取空白字节集 (len)
status = ZwQuerySystemInformation (#SystemHandleInformation, buffer, len, 0)
.如果真 (status = #STATUS_INFO_LENGTH_MISMATCH)
len = len + 16534 ' 0x4096
.如果真结束
.循环判断尾 (status = #STATUS_INFO_LENGTH_MISMATCH)
list.List (buffer, #sizeof_SYSTEM_HANDLE_INFORMATION)
返回 (list)
.子程序 获取句柄名, 文本型
.参数 handle, 整数型
.局部变量 size, 整数型
.局部变量 unicode, 字节集
.局部变量 ansi, STRING
.局部变量 str, 文本型
.如果 (ZwQueryObject (handle, #ObjectTypeInformation, unicode, 0, size) ≠ #STATUS_INVALID_HANDLE)
unicode = 取空白字节集 (size)
ZwQueryObject (handle, #ObjectNameInformation, unicode, size, 0)
RtlUnicodeStringToAnsiString (ansi, unicode, 真)
str = 指针到文本 (ansi.Buffer)
RtlFreeAnsiString (ansi)
.否则
str = “无法获取”
.如果结束
返回 (str)
.子程序 获取句柄类型, 文本型
.参数 handle, 整数型
.局部变量 size, 整数型
.局部变量 unicode, 字节集
.局部变量 ansi, STRING
.局部变量 str, 文本型
.如果 (ZwQueryObject (handle, #ObjectTypeInformation, unicode, 0, size) ≠ #STATUS_INVALID_HANDLE)
unicode = 取空白字节集 (size)
ZwQueryObject (handle, #ObjectTypeInformation, unicode, size, 0)
RtlUnicodeStringToAnsiString (ansi, unicode, 真)
str = 指针到文本 (ansi.Buffer)
RtlFreeAnsiString (ansi)
.否则
str = “无法获取”
.如果结束
返回 (str)
.子程序 获取句柄引用数, 整数型
.参数 handle, 整数型
.局部变量 state, SYSTEM_HANDLE_STATE
ZwQueryObject_SYSTEM_HANDLE_STATE (handle, #ObjectBasicInformation, state, #sizeof_SYSTEM_HANDLE_STATE, 0)
返回 (state.ReferenceCount - 1)
资源作者:
资源下载:
枚举进程句柄