| 
 | 
 
 本帖最后由 c9080 于 2017-5-5 22:30 编辑  
 
最近写了段代码发现了一个问题。 
- VOID TerminateProcess(WCHAR* wProcessName)
 
 - {
 
 -         NTSTATUS nStatus = STATUS_SUCCESS;
 
 -         HANDLE hProcess = NULL;
 
 -         OBJECT_ATTRIBUTES oa = { 0 };
 
 -         UNICODE_STRING usProcessName = { 0 };
 
 -         RtlInitUnicodeString(&usProcessName, wProcessName);
 
 -         InitializeObjectAttributes(&oa, &usProcessName,OBJ_KERNEL_HANDLE, NULL, NULL);
 
 -         nStatus = ZwOpenProcess(&hProcess, GENERIC_ALL, &oa, NULL);
 
 -         if (!NT_SUCCESS(nStatus))
 
 -         {
 
 -                 KdPrint(("ZwOpenProcess fail Error:%X", nStatus));
 
 -                 goto END;
 
 -         }
 
 -         nStatus = ZwTerminateProcess(hProcess, (NTSTATUS)0);
 
 -         if (!NT_SUCCESS(nStatus))
 
 -         {
 
 -                 KdPrint(("ZwTerminateProcess fail Error:%X", nStatus));
 
 -                 goto END;
 
 -         }
 
 - END:
 
 -         if (hProcess)
 
 -         {
 
 -                 ZwClose(hProcess);
 
 -         }
 
 -         return;
 
 - }
 
  复制代码- NTSTATUS DriverEntry(PDRIVER_OBJECT pDri, PUNICODE_STRING pReg)
 
 - {
 
 -         NTSTATUS nStatus = STATUS_SUCCESS;
 
 -         KdPrint(("DriverEntry..."));
 
 -         pDri->DriverUnload = Unload;
 
 -         TerminateProcess(L"NOTEPAD.EXE");
 
 -         return nStatus;
 
 - }
 
  复制代码 
这段代码是通过名称访问目标代码,没有通过常用的PID来访问方式。 
依据ZwOpenProcess Document文中: 
 
 
但是在XP系统加载驱动测试发现问题如图: 
 
 
通过查阅资料没有相关问题,在此求助大牛指点迷经! |   
 
 
 
 |