服务器之家

服务器之家 > 正文

易语言NTAPI进程操纵的代码

时间:2022-02-16 17:00     来源/作者:易语言源码教程

本程序实现的功能:

  • 打开进程_强力
  • 进程暂停
  • 取api函数地址
  • 进程结束
  • 进程结束_强力
  • 进程_NT内存清零
  • 进程_取自进程ID
  • 进程_提高权限
  • Kill_Process命令

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
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
.版本 2
.DLL命令 打开进程_, 整数型, "kernel32.dll", "OpenProcess", 公开, 将句柄返回给过程对象
  .参数 进程对象, 整数型, , dwDesiredAccess
  .参数 继承句柄, 整数型, , bInheritHandle 
  .参数 进程标识符, 整数型, , dwProcessId
.DLL命令 ZwOpenProcess, 整数型, "ntdll.dll", "ZwOpenProcess", 公开
  .参数 hProcess, 整数型, 传址
  .参数 DesiredAccess, 整数型
  .参数 ObjectAttributes, OBJECT_ATTRIBUTES
  .参数 ClientId, CLIENT_ID
.DLL命令 ZwQuerySystemInformation, 整数型, "ntdll.dll", "ZwQuerySystemInformation"
  .参数 SystemInformationClass, 整数型, , 未知类型:SYSTEM_INFORMATION_CLASS。
  .参数 SystemInformation, 字节集, , any
  .参数 SystemInformationLength, 整数型
  .参数 ReturnLength, 整数型, 传址
.DLL命令 取指针_字节集, 整数型, , "lstrcpyn", 公开, 常规API
  .参数 欲取其指针, 字节集, 传址
  .参数 欲取其指针, 字节集, 传址
  .参数 保留, 整数型, , 0
.DLL命令 RtlMoveMemory3, 整数型, , "RtlMoveMemory", 公开, 常规API,从地址读一个整数
  .参数 dest, 整数型, 传址
  .参数 Source, 整数型
  .参数 len, , , 4
.DLL命令 RtlMoveMemory1, 整数型, , "RtlMoveMemory", , 常规API
  .参数 dest, SYSTEM_HANDLE_TABLE_ENTRY_INFO
  .参数 Source, 整数型
  .参数 len
.DLL命令 ZwDuplicateObject, 整数型, "ntdll.dll", , 公开
  .参数 SourceProcessHandle, 整数型
  .参数 SourceHandle, 整数型
  .参数 TargetProcessHandle, 整数型
  .参数 TargetHandle, 整数型, 传址
  .参数 DesiredAccess, 整数型
  .参数 HandleAttributes, 整数型
  .参数 Options, 整数型
.DLL命令 ZwQueryInformationProcess, 整数型, "ntdll.dll", "ZwQueryInformationProcess"
  .参数 SystemInformationClass, 整数型, , 未知类型:SYSTEM_INFORMATION_CLASS。
  .参数 dd, 整数型
  .参数 SystemInformation, PROCESS_BASIC_INFORMATION, , any
  .参数 SystemInformationLength, 整数型
  .参数 ReturnLength, 整数型, 传址
.DLL命令 ZwClose, 整数型, "ntdll.dll", "ZwClose", 公开, 关闭进程句柄
  .参数 handle
.DLL命令 取函数地址_, 整数型, "kernel32", "GetProcAddress", , 返回函数地址
  .参数 模块句柄, 整数型
  .参数 函数名, 文本型
.DLL命令 取模块句柄_, 整数型, "kernel32", "GetModuleHandleA", , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError
  .参数 模块名, 文本型, , 指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD;
.DLL命令 _动态调用子程序, 整数型, , "CallWindowProcA"
  .参数 动态调用代码, 字节集, , 字节集代码
  .参数 子程序, 整数型, , 子程序指针 到整数(子程序指针)
  .参数 参数, 整数型, 数组, 为整数数组,参数1为成员1…类推;文本型和字节集型(自定义结构)为指针
  .参数 参数数目, 整数型, , 一定要和参数数组相符,不然会出错
  .参数 是否C调用, 逻辑型, , 真为cdecl调用方式,假为stdcall调用方式(即标准WINAPI方式)
.DLL命令 ZwCreateJobObject, 整数型, "ntdll.dll", , 公开
  .参数 JobHandle, 整数型, 传址
  .参数 DesiredAccess, 整数型
  .参数 ObjectAttributes, OBJECT_ATTRIBUTES
.DLL命令 关闭内核对象_, 整数型, "kernel32.dll", "CloseHandle", 公开, $(b)非零表示成功,零表示失败
  .参数 对象句柄, 整数型, , hObject,欲关闭的一个对象的句柄
.DLL命令 TerminateProcess_, 整数型, "kernel32", "TerminateProcess", , 结束一个进程 非零表示成功,零表示失败。会设置GetLastError
  .参数 hProcess, 整数型, , 指定要中断的一个进程的句柄
  .参数 uExitCode, 整数型, , 进程的一个退出代码;
.DLL命令 ZwAssignProcessToJobObject, 整数型, "ntdll.dll", , 公开
  .参数 JobHandle, 整数型
  .参数 ProcessHandle, 整数型
.DLL命令 ZwTerminateJobObject, 整数型, "ntdll.dll", , 公开
  .参数 JobHandle, 整数型
  .参数 ExitStatus, 整数型
.DLL命令 ZwTerminateProcess, 整数型, "ntdll.dll", , 公开
  .参数 ProcessHandle, 整数型
  .参数 ExitStatus, 整数型
.DLL命令 ZwProtectVirtualMemory, 整数型, "NTDLL.DLL", "ZwProtectVirtualMemory"
  .参数 ProcessHandle, 整数型
  .参数 BaseAddress, 整数型
  .参数 RegionSize, 整数型
  .参数 NewProtect, 整数型
  .参数 OldProtect, 整数型
.DLL命令 ZwWriteVirtualMemory, 整数型, "NTDLL.DLL", "ZwWriteVirtualMemory"
  .参数 ProcessHandle, 整数型
  .参数 BaseAddress, 整数型
  .参数 pBuffer, 字节集
  .参数 NumberOfBytesToWrite, 整数型
  .参数 NumberOfBytesWritten, 整数型, 传址
.DLL命令 RtlAdjustPrivilegeA, 整数型, "ntdll.dll", "RtlAdjustPrivilege"
  .参数 Privilege, 整数型
  .参数 Enable, 逻辑型
  .参数 Client, 逻辑型
  .参数 WasEnabled, 整数型, 传址
.DLL命令 API_CreateRemoteThread, 整数型, "kernel32", "CreateRemoteThread", , 在另一进程中建立线索
  .参数 hProcess, 整数型
  .参数 lpThreadAttributes, SECURITY_ATTRIBUTES
  .参数 dwStackSize, 整数型
  .参数 lpStartAddress, 整数型
  .参数 lpParameter, 整数型
  .参数 dwCreationFlags, 整数型
  .参数 lpThreadId, 整数型
.DLL命令 CreateToolhelp32Snapshot, 整数型, "Kernel32.dll", "CreateToolhelp32Snapshot"
  .参数 falg, 整数型
  .参数 id, 整数型
.DLL命令 Thread32First, 整数型, "kernel32", "Thread32First"
  .参数 hSnapshot, 整数型
  .参数 lppe, THREADENTRY32
.DLL命令 OpenThread, 整数型, "kernel32", "OpenThread"
  .参数 h, 整数型
  .参数 a, 逻辑型
  .参数 b, 整数型
.DLL命令 TerminateThread, 整数型, "NTDLL.DLL", "ZwTerminateThread"
  .参数 hThread, 整数型
  .参数 dwExitCode, 整数型
.DLL命令 Thread32Next, 整数型, "kernel32", "Thread32Next"
  .参数 hSnapshot, 整数型
  .参数 lppe, THREADENTRY32
.DLL命令 NtUnmapViewOfSection, 整数型, "ntdll.dll", "NtUnmapViewOfSection"
  .参数 hProcess
  .参数 addr
.DLL命令 LoadLibrary, 整数型, "kernel32", "LoadLibraryA", 公开
  .参数 lpLibFileName, 文本型
.DLL命令 DebugActiveProcess, 逻辑型, "kernel32", "DebugActiveProcess"
  .参数 dwProcessId, 整数型

自定义数据类型表

?
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
.版本 2
.数据类型 CLIENT_ID, 公开, CLIENT_ID结构包含进程和线程的标识符。
  .成员 UniqueProcess, 整数型, , , 进程标识符
  .成员 UniqueThread, 整数型, , , 线程标识符
.数据类型 OBJECT_ATTRIBUTES, 公开, OBJECT_ATTRIBUTES结构指定属性,可以应用于对象或对象处理的例程创建对象和/或返回对象的处理。
  .成员 Length, 整数型
  .成员 RootDirectory, 整数型
  .成员 ObjectName, 整数型
  .成员 Attributes, 整数型
  .成员 SecurityDescriptor, 整数型
  .成员 SecurityQualityOfService, 整数型
.数据类型 SECURITY_ATTRIBUTES, , 安全性结构;
  .成员 nLength, 整数型
  .成员 lpSecurityDescriptor, 整数型
  .成员 bInheritHandle, 整数型
.数据类型 PROCESS_BASIC_INFORMATION, 公开
  .成员 ExitStatus, 整数型
  .成员 PebBaseAddress, 整数型
  .成员 AffinityMask, 整数型
  .成员 BasePriority, 整数型
  .成员 UniqueProcessId, 整数型
  .成员 InheritedFromUniqueProcessId, 整数型
.数据类型 MEMORY_BASIC_INFORMATION, 公开
  .成员 BaseAddress, 整数型
  .成员 AllocationBase, 整数型
  .成员 AllocattionProtect, 整数型
  .成员 RegionSize, 整数型
  .成员 State, 整数型
  .成员 Protect, 整数型
  .成员 Type, 整数型
.数据类型 SYSTEM_HANDLE_TABLE_ENTRY_INFO, 公开
  .成员 UniqueProcessId, 短整数型
  .成员 CreatorBackTraceIndex, 短整数型
  .成员 ObjectTypeIndex, 字节型
  .成员 HandleAttributes, 字节型
  .成员 HandleValue, 短整数型
  .成员 pObject, 整数型
  .成员 GrantedAccess, 整数型
.数据类型 THREADENTRY32
  .成员 dwsize, 整数型
  .成员 cntusage, 整数型
  .成员 th32threadID, 整数型
  .成员 th32OwnerProcessID, 整数型
  .成员 tpBasePri, 整数型
  .成员 tpDeltaPri, 整数型
  .成员 dwFlags, 整数型

常量数据表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.版本 2
.常量 PROCESS_ALL_ACCESS, "2035711", 公开
.常量 STATUS_INFO_LENGTH_MISMATCH, "-1073741820", 公开
.常量 STATUS_SUCCESS, "0", 公开
.常量 PROCESS_QUERY_INFORMATION, "1024", 公开
.常量 STATUS_INVALID_PARAMETER, "-1073741811", 公开
.常量 OBJ_INHERIT, "2", 公开
.常量 DUPLICATE_CLOSE_SOURCE, "1", 公开
.常量 DUPLICATE_SAME_ACCESS, "2", 公开
.常量 DUPLICATE_SAME_ATTRIBUTES, "4", 公开
.常量 OB_TYPE_PROCESS, "5", 公开
.常量 ZwGetCurrentProcess, "-1", 公开
.常量 PROCESS_DUP_HANDLE, "64", 公开
.常量 PAGE_EXECUTE_READWRITE, "64"
.常量 JOB_OBJECT_ALL_ACCESS, "2031647", 公开

NTAPI进程操纵代码

?
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
.版本 2
.程序集 主程序集
.子程序 _启动子程序, 整数型
进程_提高权限 ()
信息框 (进程暂停 (3796, 假), 0, , )
返回 (0)
.子程序 打开进程_强力, 整数型, 公开, 主要为NATIVE API
.参数 dwDesiredAccess, 整数型
.参数 bInhert, 逻辑型
.参数 ProcessId, 整数型
.局部变量 st, 整数型
.局部变量 cid, CLIENT_ID, , , CLIENT_ID结构包含进程和线程的标识符。
.局部变量 oa, OBJECT_ATTRIBUTES
.局部变量 NumOfHandle, 整数型
.局部变量 pbi, PROCESS_BASIC_INFORMATION
.局部变量 i, 整数型
.局部变量 hProcessToDup, 整数型
.局部变量 hProcessCur, 整数型
.局部变量 hProcessToRet, 整数型
.局部变量 h_info, SYSTEM_HANDLE_TABLE_ENTRY_INFO
.局部变量 retlen, 整数型
.局部变量 a, 字节集
.局部变量 b, 整数型
.局部变量 c, 字节集
.局部变量 ret, 整数型
.如果真 (ProcessId = 0)
  返回 (0)
.如果真结束
oa.Length = 24
.如果真 (bInhert)
  oa.Attributes = 位或 (oa.Attributes, #OBJ_INHERIT)
.如果真结束
cid.UniqueProcess = ProcessId + 1
st = ZwOpenProcess (hProcessToRet, dwDesiredAccess, oa, cid)
.如果真 (st ≥ 0)
  ret = hProcessToRet
  返回 (ret)
.如果真结束
retlen = 1
.循环判断首 ()
  a = 取空白字节集 (retlen)
  ret = ZwQuerySystemInformation (16, a, retlen, 0)
  .如果 (ret = #STATUS_INFO_LENGTH_MISMATCH)
    retlen = retlen × 2
    a = 取空白字节集 (retlen)
  .否则
    跳出循环 ()
  .如果结束
.循环判断尾 (ret = #STATUS_INFO_LENGTH_MISMATCH)
b = 取指针_字节集 (a, a, 0)
RtlMoveMemory3 (NumOfHandle, b, 4)
b = b + 4
.计次循环首 (NumOfHandle, i)
  RtlMoveMemory1 (h_info, b, 16)
  .如果真 (h_info.ObjectTypeIndex = #OB_TYPE_PROCESS)
    cid.UniqueProcess = h_info.UniqueProcessId
    st = ZwOpenProcess (hProcessToDup, #PROCESS_DUP_HANDLE, oa, cid)
    .如果真 (st ≥ 0)
      st = ZwDuplicateObject (hProcessToDup, h_info.HandleValue, #ZwGetCurrentProcess, hProcessCur, #PROCESS_ALL_ACCESS, 0, #DUPLICATE_SAME_ATTRIBUTES)
      .如果真 (st ≥ 0)
        st = ZwQueryInformationProcess (hProcessCur, 0, pbi, 24, 0)
        .如果真 (st ≥ 0)
          .如果真 (pbi.UniqueProcessId = ProcessId)
            st = ZwDuplicateObject (hProcessToDup, h_info.HandleValue, #ZwGetCurrentProcess, hProcessToRet, dwDesiredAccess, #OBJ_INHERIT, #DUPLICATE_SAME_ATTRIBUTES)
            .如果真 (st ≥ 0)
              ret = hProcessToRet
            .如果真结束
          .如果真结束
        .如果真结束
      .如果真结束
      st = ZwClose (hProcessCur)
    .如果真结束
    st = ZwClose (hProcessToDup)
  .如果真结束
  b = b + 16
.计次循环尾 ()
返回 (ret)
.子程序 进程暂停, 逻辑型, 公开, 进程暂停(成功返回真,失败假)
.参数 PID, 整数型
.参数 状态, 逻辑型, 可空
.局部变量 进程句柄, 整数型
.局部变量 a, 整数型
进程句柄 = 打开进程_ (2035711, 0, PID)
.如果真 (进程句柄 = 0)
  进程句柄 = 打开进程_强力 (2035711, 假, PID)
.如果真结束
.如果真 (进程句柄 = 0)
  返回 (假)
.如果真结束
.如果 (状态)
  a = API_ZwSuspendProcess (进程句柄)
.否则
  a = API_ZwResumeProcess (进程句柄)
.如果结束
关闭内核对象_ (进程句柄)
返回 (a = 0)
.子程序 API_ZwSuspendProcess, 整数型, , NTDLL.DLL,API_ZwSuspendProcess
.参数 进程句柄, 整数型
.局部变量 地址, 整数型
.局部变量 参数, 整数型, , "1"
地址 = 取api函数地址 (“NTDLL.DLL”, “ZwSuspendProcess”) ' 取出NTDLL中函数ZwSuspendProcess的地址
参数 [1] = 进程句柄 ' ZwSuspendProcess的参数,ZwSuspendProcess是系统自带的挂起进程命令,动态调用防止钩子
返回 (_动态调用子程序 (#动态调用代码, 地址, 参数, 1, 假)) ' 动态调用
.子程序 取api函数地址, 整数型, 公开
.参数 dll文件名, 文本型
.参数 dll命令名, 文本型
返回 (取函数地址_ (取模块句柄_ (dll文件名), dll命令名))
.子程序 API_ZwResumeProcess, 整数型, , NTDLL.DLL,API_ZwResumeProcess
.参数 进程句柄, 整数型
.局部变量 地址, 整数型
.局部变量 参数, 整数型, , "1"
地址 = 取api函数地址 (“NTDLL.DLL”, “ZwResumeProcess”) ' 取出NTDLL中函数ZwResumeProcess的地址
参数 [1] = 进程句柄 ' ZwResumeProcess的参数,ZwResumeProcess是系统自带的恢复进程命令,动态调用防止钩子
返回 (_动态调用子程序 (#动态调用代码, 地址, 参数, 1, 假)) ' 动态调用
.子程序 进程结束, 逻辑型, 公开, 终止一个进程(成功返回真,失败返回假)
.参数 进程ID, 整数型, , 欲结束的进程ID
.局部变量 进程句柄, 整数型
.局部变量 a, 整数型
进程句柄 = 打开进程_ (进程ID)
a = TerminateProcess_ (进程句柄, 0)
关闭内核对象_ (进程句柄)
返回 (a > 0)
.子程序 进程结束_强力, 逻辑型, 公开, 主要为NATIVE API
.参数 hProcess, 整数型
.参数 ExitStatus, 整数型, , 0
.局部变量 st, 整数型
.局部变量 hJob, 整数型
.局部变量 oa, OBJECT_ATTRIBUTES
.局部变量 ret, 逻辑型
ret = 假
oa.Length = 24
st = ZwCreateJobObject (hJob, #JOB_OBJECT_ALL_ACCESS, oa)
.如果真 (st ≥ 0)
  st = ZwAssignProcessToJobObject (hJob, hProcess)
  .如果真 (st ≥ 0)
    st = ZwTerminateJobObject (hJob, ExitStatus)
    .如果真 (st ≥ 0)
      ret = 真
    .如果真结束
  .如果真结束
  ZwClose (hJob)
.如果真结束
.如果真 (ret = 假)
  st = ZwTerminateProcess (hProcess, ExitStatus)
  .如果真 (st ≥ 0)
    ret = 真
  .如果真结束
.如果真结束
返回 (ret)
.子程序 进程_NT内存清零, 逻辑型, 公开, 注意,该命令十分强力,可以清除进程大部分残余命令和内存(注:速度太慢,CPU占量很高,请慎用!)
.参数 PID, 整数型
.局部变量 hprocess, 整数型
.局部变量 i, 整数型
.局部变量 内存填充物, 整数型
hprocess = 打开进程_强力 (#PROCESS_ALL_ACCESS, 假, PID)
内存填充物 = 取空白字节集 (255)
.变量循环首 (0, 40960000, 4096, i)
  ZwProtectVirtualMemory (hprocess, i, 4096, #PAGE_EXECUTE_READWRITE, 0)
  ZwWriteVirtualMemory (hprocess, i, 内存填充物, 4096, 0)
.变量循环尾 ()
ZwClose (hprocess)
.子程序 进程_取自进程ID, 整数型, 公开, 取自身进程PID,成功返回进程ID,失败返回-1
置入代码 ({ 100, 139, 5, 32, 0, 0, 0, 201, 195 })
返回 (-1)
.子程序 进程_提高权限, 逻辑型, 公开, NT强力提高权限,限自身
RtlAdjustPrivilegeA (20, 真, 假, 0)
返回 (真)
.子程序 Kill_Process, 逻辑型, 公开, 包含8种杀进程方法
.参数 PID, 整数型
.局部变量 hJob, 整数型
.局部变量 oa, OBJECT_ATTRIBUTES
.局部变量 H, 整数型
.局部变量 h_d, 整数型
.局部变量 sa, SECURITY_ATTRIBUTES
.局部变量 i, 整数型
H = 打开进程_ (PID)
.如果真 (H = 0)
  H = 打开进程_强力 (#PROCESS_ALL_ACCESS, 假, PID)
.如果真结束
.如果 (H ≠ 0)
  .如果真 (ZwTerminateProcess (H, 1) ≥ 1)
    返回 (真)
  .如果真结束
  .如果真 (进程结束 (PID))
    返回 (真)
  .如果真结束
  .如果真 (进程结束_强力 (H, 0))
    返回 (真)
  .如果真结束
  oa.Length = 24
  .如果真 (ZwCreateJobObject (hJob, 2031647, oa) ≥ 0)
    .如果真 (ZwAssignProcessToJobObject (hJob, H) ≥ 0 且 ZwTerminateJobObject (hJob, 0) ≥ 0)
      ZwClose (H)
      ZwClose (hJob)
      返回 (真)
    .如果真结束
    ZwClose (hJob)
  .如果真结束
  h_d = 取api函数地址 (“kernel32.dll”, “ExitProcess”)
  API_CreateRemoteThread (H, sa, 0, h_d, 0, 0, 0)
  关闭内核对象_ (H)
  .如果真 (KillAllTheard (PID))
    返回 (真)
  .如果真结束
.否则
  H = 打开进程_ (8, 0, PID)
  .如果真 (H = 0)
    H = 打开进程_强力 (8, 假, PID)
  .如果真结束
  i = NtUnmapViewOfSection (H, LoadLibrary (“kernel32.dll”)) ' 强制卸载kernel32.dll
  i = NtUnmapViewOfSection (H, LoadLibrary (“USER32.dll”)) ' 强制卸载USER32.dll
  i = NtUnmapViewOfSection (H, LoadLibrary (“GDI32.dll”)) ' 强制卸载GDI32.dll
  i = NtUnmapViewOfSection (H, LoadLibrary (“KERNELBASE.dll”)) ' 强制卸载KERNELBASE.dll
  i = NtUnmapViewOfSection (H, LoadLibrary (“ntdll.dll”)) ' 强制卸载ntdll.dll
  ZwClose (H)
  .如果真 (i ≥ 0)
    返回 (真)
  .如果真结束
  返回 (DebugActiveProcess (PID))
.如果结束
返回 (假)
.子程序 KillAllTheard, 逻辑型
.参数 pid
.局部变量 hSnapShot, 整数型
.局部变量 End, 整数型
.局部变量 buffer, THREADENTRY32
.局部变量 tid, 整数型
.局部变量 handle
tid = -1
hSnapShot = CreateToolhelp32Snapshot (4, 0)
buffer.dwsize = 28
End = Thread32First (hSnapShot, buffer)
.判断循环首 (End ≠ 0)
  .如果真 (buffer.th32OwnerProcessID = pid)
    tid = buffer.th32threadID
    handle = OpenThread (2032639, 假, tid)
    .如果真 (TerminateThread (handle, 0) = 0)
      关闭内核对象_ (handle)
      关闭内核对象_ (hSnapShot)
      返回 (假)
    .如果真结束
    关闭内核对象_ (handle)
    跳出循环 ()
  .如果真结束
  End = Thread32Next (hSnapShot, buffer)
.判断循环尾 ()
关闭内核对象_ (hSnapShot)
返回 (真)

总结

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

标签:

相关文章

热门资讯

蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
2022年最旺的微信头像大全 微信头像2022年最新版图片
2022年最旺的微信头像大全 微信头像2022年最新版图片 2022-01-10
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
返回顶部