|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
NTAPI大家应该知道吧?
其实就是NTDLL中的函数(大部分都是原型函数,User32和Kernel32都是调用这里的)(简单介绍NTDLL:ntdll.dll是重要的Windows NT内核级文件。描述了windows本地NTAPI的接口。当Windows启动时,ntdll.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。)
好了言归正传:
本程序包括:打开进程_强力,进程暂停,取api函数地址,进程结束,进程结束_强力,进程_NT内存清零,进程_取自进程ID,进程_提高权限,Kill_Process命令
还有一堆看不懂的API和数据类型(看不懂没关系,我已经写好了很多注释了哦~~)
来观摩一下:
变量名 | 类 型 | 静态 | 数组 | 备 注 | 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”)) i = NtUnmapViewOfSection (H, LoadLibrary (“USER32.dll”)) i = NtUnmapViewOfSection (H, LoadLibrary (“GDI32.dll”)) i = NtUnmapViewOfSection (H, LoadLibrary (“KERNELBASE.dll”)) i = NtUnmapViewOfSection (H, LoadLibrary (“ntdll.dll”)) ZwClose (H )如果真 (i ≥ 0 )返回 (真) 返回 (DebugActiveProcess (PID )) 返回 (假)|
打开进程_强力 | 整数型 | | |
dwDesiredAccess | 整数型 | | | | bInhert | 逻辑型 | | | | ProcessId | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | st | 整数型 | | | cid | 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 )
注释什么的都是有的哦~~
新手也很容易上手哦~~
有人可能会说:LZ,你光吹6B,实际用起来怎么样呢?
这个问题可就提的好了
来看看效果:
怎么样,金山一下子就被挂起了(当然了,250+110和系统进程我建议不要试了,包括结束也不要试,否则结束了系统进程或360导致的蓝屏可不关我事哦~~)
同时本程序也包括多种杀进程方法(注释都是有的)
主要是“普通杀进程,TerminateProcess,杀作业对象,远程线程结束,强制结束所有线程,强制卸载ntdll.dll,内存清0”
老规矩:源码回复下载
最后说一句:如果你觉得可以的话,请:
一下(点2下又不会扣分),源码回复下载!!
进程.e
(32.08 KB, 下载次数: 647)
|
评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 鱼木|主题: 1546, 订阅: 152
- · 精易博士-精品收录|主题: 289, 订阅: 88
- · 精品集|主题: 611, 订阅: 64
- · 好贴精选|主题: 418, 订阅: 20
- · 实用干货|主题: 118, 订阅: 17
- · 更多
|