|
发表于 2016-7-24 19:46:23
|
显示全部楼层
发现一个奇怪的问题,你这个东西只对改IE进程命令行的效果很好,但是对CHROME就无效了。
DBGVIEW显示已更改,但是实际无效。直接在CMD里用命令行启动【chrome www.baidu.com】是有效的。
以下是我修改过的代码,你原来PWCHAR *tmp是不对的。- VOID CreateProcessNotify
- (
- IN HANDLE ParentId,
- IN HANDLE ProcessId,
- IN BOOLEAN Create
- )
- {
- NTSTATUS status = STATUS_SUCCESS;
- PEPROCESS pEprocess = NULL;
- if (Create)
- {
- status = PsLookupProcessByProcessId(ProcessId, &pEprocess);//没有ObDereferenceObject
- if (NT_SUCCESS(status))
- {
- PFILE_OBJECT FilePointer = NULL;
- KAPC_STATE ApcState;
- PPEB peb;
- PCHAR procName = PsGetProcessImageFileName(pEprocess);
- status = PsReferenceProcessFilePointer((PEPROCESS)pEprocess, &FilePointer);
- KeStackAttachProcess((PRKPROCESS)pEprocess, &ApcState);
- peb = PsGetProcessPeb(pEprocess);
- //DbgPrint("++++%wZ+++++%wZ\r\n", &peb->ProcessParameters->CommandLine, &peb->ProcessParameters->ImagePathName);
- if
- (
- peb->ProcessParameters->CommandLine.Length - peb->ProcessParameters->ImagePathName.Length <= 6 &&
- (!_strnicmp(procName,"iexplore.exe",12) || !_strnicmp(procName,"chrome.exe",10))
- )
- {
- UNICODE_STRING Unicode_tmp;
- PWCHAR tmp = (PWCHAR)(peb->ProcessParameters->CommandLine.Buffer);
- wcscat(tmp, L" www.baidu.com");
- RtlInitUnicodeString(&Unicode_tmp, tmp);
- peb->ProcessParameters->CommandLine = Unicode_tmp;
- peb->ProcessParameters->WindowTitle = Unicode_tmp;
- DbgPrint("--->%wZ\r\n", &peb->ProcessParameters->CommandLine);
- }
- KeUnstackDetachProcess(&ApcState);
- }
- }
- }
复制代码 |
|