|
本帖最后由 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系统加载驱动测试发现问题如图:
通过查阅资料没有相关问题,在此求助大牛指点迷经! |
|