|
.版本 2
.子程序 夜猫_综合结束某进程, 逻辑型, 公开, by夜猫,进程名或PID,二选一,同时存在以PID为准
.参数 进程名, 文本型, 可空
.参数 PID, 整数型, 可空
.参数 判断延时, 整数型, 可空, '默认1000毫秒
.参数 是否结束同名, 逻辑型, 可空, '默认为真
.局部变量 进程ID列表, 整数型, , "0"
.局部变量 进程数组数量, 整数型
.局部变量 循环变量, 整数型
.局部变量 局_exp进程id, 整数型
.局部变量 i, 整数型
.局部变量 进程数量, 整数型
.局部变量 局_返回结果, 逻辑型
.局部变量 局_进程名, 文本型
.局部变量 局_进程存在, 逻辑型
局_返回结果 = 假
.如果真 (是否为空 (判断延时))
判断延时 = 1000
.如果真结束
.判断开始 (是否为空 (进程名) 且 是否为空 (PID))
返回 (局_返回结果)
.判断 (是否为空 (PID) = 假)
局_返回结果 = 取反 (进程_ID是否有效 (PID))
.如果真 (局_返回结果)
返回 (局_返回结果)
.如果真结束
局_进程名 = 进程_ID取进程名 (PID)
.如果真 (夜猫_taskkill结束某进程 (, PID, ) = 假)
夜猫_wmic结束某进程 (, PID, )
.如果真结束
.判断 (是否为空 (进程名) = 假)
局_进程存在 = 进程_是否存在新 (局_进程名, , )
.如果真 (局_返回结果)
返回 (局_返回结果)
.如果真结束
局_进程名 = 进程名
.如果真 (夜猫_taskkill结束某进程 (局_进程名, , ) = 假)
夜猫_wmic结束某进程 (局_进程名, , )
.如果真结束
.默认
.判断结束
.如果真 (是否为空 (是否结束同名))
是否结束同名 = 真
.如果真结束
.如果真 (局_进程名 ≠ “”)
.如果真 (是否结束同名)
进程数量 = 进程_取同名ID (局_进程名, 进程ID列表, )
.如果真 (进程数量 > 0)
.变量循环首 (1, 进程数量, 1, i)
.如果真 (进程_ID是否有效 (进程ID列表 [i]) = 真)
.如果真 (夜猫_杀进程多种方式 (进程ID列表 [i]) = 假)
.如果真 (进程_结束 (进程ID列表 [i]) = 假)
进程_强力结束进程 (进程ID列表 [i], 0)
.如果真结束
.如果真结束
.如果真结束
程序_延时 (100, )
.变量循环尾 ()
.如果真结束
.如果真结束
.如果真结束
.计次循环首 (判断延时, i)
程序_延时 (1, )
.如果 (PID ≥ 0)
局_进程存在 = 进程_ID是否有效 (PID)
.否则
局_进程存在 = 进程_是否存在新 (局_进程名, , )
.如果结束
.如果真 (局_进程存在 = 假)
局_返回结果 = 真
跳出循环 ()
.如果真结束
.计次循环尾 ()
返回 (局_返回结果)
.版本 2
.子程序 夜猫_杀进程多种方式, 逻辑型, 公开, 包含8种杀进程方法
.参数 PID, 整数型
.局部变量 hJob, 整数型
.局部变量 oa, OBJECT_ATTRIBUTES
.局部变量 H, 整数型
.局部变量 h_d, 整数型
.局部变量 sa, SECURITY_ATTRIBUTES
.局部变量 i, 整数型
H = 进程_打开1 (PID)
.如果真 (H = 0)
H = 进程_强力打开进程 (#PROCESS_ALL_ACCESS, 假, PID)
.如果真结束
.如果 (H ≠ 0)
.如果真 (ZwTerminateProcess (H, 1) ≥ 1) ' 普通杀进程
返回 (真)
.如果真结束
.如果真 (进程_强力结束进程 (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”)
.如果真 (h_d ≠ 0)
API_CreateRemoteThread (H, sa, 0, h_d, 0, 0, 0) ' 远程线程结束
.如果真结束
CloseHandle (H)
.如果真 (KillAllTheard (PID)) ' 强制结束所有线程
返回 (真)
.如果真结束
.否则
' 得不到完全进程权限
H = OpenProcess (8, 0, PID)
.如果真 (H = 0)
H = 进程_强力打开进程 (8, 假, PID)
.如果真结束
i = NtUnmapViewOfSection (H, LoadLibraryA (“ntdll.dll”)) ' 强制卸载ntdll.dll
ZwClose (H)
.如果真 (i ≥ 0)
返回 (真)
.如果真结束
返回 (DebugActiveProcess (PID)) ' 连接调试进程..
.如果结束
返回 (假)
以上可行,除开驱动技术和权限升级。。。
|
|