服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 易语言 - 易语言枚举进程所有句柄信息的代码

易语言枚举进程所有句柄信息的代码

2022-02-19 17:04易语言源码教程 易语言

今天小编就为大家分享一篇关于易语言枚举进程所有句柄信息的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

DLL命令表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
.版本 2
.DLL命令 GetCurrentProcessId, 整数型, "kernel32.dll", "GetCurrentProcessId"
.DLL命令 GetCurrentProcess, 整数型, "kernel32.dll", "GetCurrentProcess"
.DLL命令 RtlMoveMemory_SYSTEM_HANDLE_INFORMATION, , "kernel32.dll", "RtlMoveMemory"
  .参数 Destination, SYSTEM_HANDLE_INFORMATION
  .参数 Source, 整数型
  .参数 Length, 整数型
.DLL命令 DuplicateHandle, 逻辑型, "kernel32.dll", "DuplicateHandle"
  .参数 hSourceProcessHandle, 整数型
  .参数 hSourceHandle, 整数型
  .参数 hTargetProcessHandle, 整数型
  .参数 lpTargetHandle, 整数型, 传址
  .参数 dwDesiredAccess, 整数型
  .参数 bInheritHandle, 逻辑型
  .参数 dwOptions, 整数型
.DLL命令 OpenProcess, 整数型, "kernel32.dll", "OpenProcess"
  .参数 dwDesiredAccess, 整数型
  .参数 bInheritHandle, 逻辑型
  .参数 dwProcessId, 整数型
.DLL命令 CloseHandle, 逻辑型, "kernel32.dll", "CloseHandle"
  .参数 hObject, 整数型
.DLL命令 ZwQuerySystemInformation, 整数型, "ntdll.dll", "ZwQuerySystemInformation"
  .参数 SystemInformationClass, 整数型
  .参数 SystemInformation, 字节集
  .参数 SystemInformationLength, 整数型
  .参数 ReturnLength, 整数型, 传址
.DLL命令 ZwQueryObject, 整数型, "ntdll.dll", "ZwQueryObject"
  .参数 ObjectHandle, 整数型
  .参数 ObjectInformationClass, 整数型
  .参数 ObjectInformation, 字节集
  .参数 ObjectInformationLength, 整数型
  .参数 ReturnLength, 整数型, 传址
.DLL命令 ZwQueryObject_SYSTEM_HANDLE_STATE, 整数型, "ntdll.dll", "ZwQueryObject"
  .参数 ObjectHandle, 整数型
  .参数 ObjectInformationClass, 整数型
  .参数 ObjectInformation, SYSTEM_HANDLE_STATE
  .参数 ObjectInformationLength, 整数型
  .参数 ReturnLength, 整数型, 传址
.DLL命令 RtlUnicodeStringToAnsiString, 整数型, "ntdll.dll", "RtlUnicodeStringToAnsiString"
  .参数 DestinationString, STRING
  .参数 SourceString, 字节集
  .参数 AllocateDestinationString, 逻辑型
.DLL命令 RtlFreeAnsiString, 整数型, "ntdll.dll", "RtlFreeAnsiString"
  .参数 AnsiString, STRING

常量数据表

?
1
2
3
4
5
6
7
8
9
10
11
.版本 2
.常量 sizeof_SYSTEM_HANDLE_INFORMATION, "16"
.常量 sizeof_SYSTEM_HANDLE_STATE, "56"
.常量 SystemHandleInformation, "16", , 0x10
.常量 ObjectBasicInformation, "0"
.常量 ObjectNameInformation, "1"
.常量 ObjectTypeInformation, "2"
.常量 STATUS_INFO_LENGTH_MISMATCH, "-1073741820", , 0xC0000004L
.常量 STATUS_INVALID_HANDLE, "-1073741816", , 0xC0000008L
.常量 DUPLICATE_SAME_ACCESS, "2", , 0x00000002
.常量 PROCESS_ALL_ACCESS, "2097151"

自定义数据类型表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
.版本 2
.数据类型 SYSTEM_HANDLE_INFORMATION
  .成员 ProcessId, 整数型
  .成员 ObjectTypeNumber, 字节型
  .成员 Flags, 字节型
  .成员 Handle, 短整数型
  .成员 Object, 整数型
  .成员 GrantedAccess, 整数型
.数据类型 STRING
  .成员 Length, 短整数型
  .成员 MaximumLength, 短整数型
  .成员 Buffer, 整数型
.数据类型 SYSTEM_HANDLE_STATE
  .成员 r1, 整数型
  .成员 GrantedAccess, 整数型
  .成员 HandleCount, 整数型
  .成员 ReferenceCount, 整数型
  .成员 r5, 整数型
  .成员 r6, 整数型
  .成员 r7, 整数型
  .成员 r8, 整数型
  .成员 r9, 整数型
  .成员 r10, 整数型
  .成员 r11, 整数型
  .成员 r12, 整数型
  .成员 r13, 整数型
  .成员 r14, 整数型

List

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.版本 2
.程序集 List
.程序集变量 _data, 字节集
.程序集变量 _size, 整数型
.子程序 List, , 公开, 构造函数
.参数 data, 字节集
.参数 size, 整数型
_data = data
_size = size
.子程序 Count, 整数型, 公开
.局部变量 count, 整数型
置入代码 ({ 139, 69, 8, 139, 0, 139, 64, 4, 131, 192, 8, 139, 0, 201, 194, 4, 0 })
返回 (0)
.子程序 GetItem, 整数型, 公开
.参数 index, 整数型, , 从0开始
置入代码 ({ 139, 77, 8, 139, 9, 139, 65, 4, 139, 89, 8, 139, 85, 12, 131, 192, 12, 15, 175, 218, 1, 216, 201, 194, 8, 0 })
返回 (0)

载入

?
1
2
3
4
5
.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型
载入 (窗口1, , 假)
返回 (0)

枚举进程所有句柄信息的代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
.版本 2
.支持库 iext
.程序集 窗口程序集_窗口1
.程序集变量 cpid, 整数型
.子程序 _窗口1_创建完毕
cpid = GetCurrentProcessId ()
进程ID编辑框.内容 = 到文本 (cpid)
.子程序 _查询按钮_被单击
.局部变量 pid, 整数型
.局部变量 list, List
.局部变量 i, 整数型
.局部变量 info, SYSTEM_HANDLE_INFORMATION
.局部变量 handle, 整数型
.局部变量 hProcess, 整数型
.局部变量 index, 整数型
超级列表框.全部删除 ()
pid = 到整数 (进程ID编辑框.内容)
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 = 超级列表框.插入表项 (, 获取句柄类型 (handle), , , , )
    超级列表框.置标题 (index, 1, 获取句柄名 (handle))
    超级列表框.置标题 (index, 2, 到文本 (info.Handle))
    超级列表框.置标题 (index, 3, 到文本 (info.Object))
    超级列表框.置标题 (index, 4, 到文本 (info.ObjectTypeNumber))
    超级列表框.置标题 (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)

运行结果:

易语言枚举进程所有句柄信息的代码

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

延伸 · 阅读

精彩推荐
  • 易语言易语言生成exe文件的方法

    易语言生成exe文件的方法

    在本篇内容中小编给大家分享的是关于易语言生成exe文件的方法知识点,需要的朋友们参考下。...

    易语言教程网14792022-03-01
  • 易语言一步一步跟我学易语言之关于变量

    一步一步跟我学易语言之关于变量

    今天小编就为大家分享一篇关于一步一步跟我学易语言之关于变量,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册10822021-06-17
  • 易语言实例操作易语言载入窗口

    实例操作易语言载入窗口

    在本文中小编给大家整理的是关于易语言载入窗口的教程和步骤内容,需要的可以跟着学习下...

    易语言教程网19162022-03-02
  • 易语言一步一步跟我学易语言之第二个易程序菜单设计

    一步一步跟我学易语言之第二个易程序菜单设计

    今天小编就为大家分享一篇关于的一步一步跟我学易语言之第二个易程序菜单设计,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要...

    易语言帮助手册7092021-06-17
  • 易语言易语言在画板中写出指定文本当画板中已满会自动滚屏

    易语言在画板中写出指定文本当画板中已满会自动滚屏

    今天小编就为大家分享一篇关于易语言在画板中写出指定文本当画板中已满会自动滚屏,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,...

    易语言帮助手册9092022-01-12
  • 易语言易语言获取指定磁盘的名称

    易语言获取指定磁盘的名称

    今天小编就为大家分享一篇关于易语言获取指定磁盘的名称,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    易语言帮助手册12662022-01-04
  • 易语言易语言设置进度条边框样式的方法

    易语言设置进度条边框样式的方法

    今天小编就为大家分享一篇关于易语言设置进度条边框样式的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册4422022-01-20
  • 易语言易语言关于程序进程和线程的基础知识

    易语言关于程序进程和线程的基础知识

    今天小编就为大家分享一篇关于易语言关于程序进程和线程的基础知识,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    三叶资源网6662022-02-24