- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
#include <ntddk.h>//以下代码需要这个头文件
long Ring0OpenProcess(HANDLE Pid)//在内核里面-依据进程PID获取进程句柄
{
ULONG ProcessHandle=0;
CLIENT_ID objCid;
OBJECT_ATTRIBUTES objOa;
RtlZeroMemory(&objOa,sizeof(OBJECT_ATTRIBUTES));
RtlZeroMemory(&objCid,sizeof(CLIENT_ID));
objOa.Length = sizeof(objOa);
objCid.UniqueProcess = (HANDLE)Pid; //进程pid
ZwOpenProcess (&(HANDLE)ProcessHandle, 0x1F0FFF, &objOa, &objCid);//打开进程
return ProcessHandle;//返回的进程句柄
}
long hProcess =Ring0OpenProcess(进程PID);//获取进程句柄
NtTerminateProcess(hProcess);//结束进程
有了进程句柄后就可以。。。读取内存、修改内存、结束进程
如果依据进程名来获取 ,获取进程的PID。这个我在之前的连载中 已经有过了,是驱动连载2.
以上这个是一个驱动杀进程的一个方法思路,不过重要的是今天把一个实用的自定义函数分享给大家:Ring0OpenProcess ,意思就是在内存中依据进程PID获取进程句柄。
个人觉得,这个自定义函数蛮实用的,我想这里用驱动写东西的人很少。。不过我依旧坚持发下去。 |
|