32位/64位WINDOWS驱动之保护特定名字进程【蓝屏修复】
1.驱动层 进程保护.c
在const char*PsGetProcessImageFileName(PEPROCESS arg1);
下添加:
//功能:进程ID,进程名称
const char* GetProcessName(HANDLE ProcessId)
{
NTSTATUS st = STATUS_UNSUCCESSFUL;
PEPROCESS ProcessObj = NULL;
const char* imagename = NULL;
st = PsLookupProcessByProcessId(ProcessId,&ProcessObj);
if (NT_SUCCESS(st))
{
imagename = PsGetProcessImageFileName(ProcessObj);
ObfDereferenceObject(ProcessObj);
}
return imagename;
}
const char* GetProcessName(HANDLE dwPid) 重命名了改为
const char* GetProcessName2(HANDLE dwPid)
2.进程保护.H头文件里面声明一下;
代码如下(示例):
const char* GetProcessName(HANDLE ProcessId);//功能:进程ID,进程名称
windbg里面没有自动换行,要在调试信息里面进行加上换行代码\n
这段代码取消注释
const char*目标进程名 = GetProcessName(dwProcessId);//要保护是这个进程名
windbg里面虚拟机串行调试信息太频繁导致太卡,调整调试信息不频繁
注释掉
//KdPrint(("yjx:sys pEPROCESS=%p dwProcessId=%d\n", OperationInformation->Object, dwProcessId));
和//KdPrint(("yjx:old权限=%x 新权限 = %X 被保护的进程PID=%d\n", old权限, new1, dwProcessId));
取消这个注释
KdPrint(("yjx:SYS 进程名=%s, pid=%d 目标进程名=%s 目标PID =%d \n", 进程名, curPID, 目标进程名, dwProcessId));