先上图

驱动执行完毕以后:

任务管理器和工具上的进程都不见了,那么他到底去哪里了呢?
对没错把名字抹掉了,别人都是写个别的进程的名字因为我懒所以直接写空
上代码
BOOLEAN PathSeAuditProcessCreationInfo(PEPROCESS Process, WCHAR* ProcessName){
PUNICODE_STRING Name ;
PUNICODE_STRING SelocateName;
SeLocateProcessImageName(Process, &SelocateName);
ExFreePool(SelocateName);
Name = (PUNICODE_STRING)(*(PULONG_PTR)((ULONG_PTR)Process + 0x468));//+0x468 SeAuditProcessCreationInfo
if ((wcslen(ProcessName) * 2) > Name->Length)
{
return FALSE;
}
RtlZeroMemory(Name->Buffer, Name->MaximumLength);
RtlCopyMemory(Name->Buffer, ProcessName, wcslen(ProcessName) * 2);
Name->Length = wcslen(ProcessName) * 2;
return TRUE;
}
对应结构体中


BOOLEAN PathImageFileName(PEPROCESS Process, char* cName)
{
char szNameBuff[15] = { 0 };
UCHAR* szProcessBuff = NULL;
size_t cNamelen = 0;
cNamelen = strlen(cName);
RtlZeroMemory(szNameBuff, sizeof(szNameBuff));
if (cNamelen > 15)
RtlCopyMemory(szNameBuff, cName, sizeof(szNameBuff));
else
RtlCopyMemory(szNameBuff, cName, cNamelen);
szProcessBuff = PsGetProcessImageFileName(Process);
RtlZeroMemory(szProcessBuff, sizeof(szNameBuff));
RtlCopyMemory(szProcessBuff, szNameBuff, sizeof(szNameBuff));
return TRUE;
}

bool Win10ImageNamePoint(PEPROCESS Process, WCHAR* szFullName)
{
BOOLEAN bRet ;
PFILE_OBJECT pFileObject ;
WCHAR* szNewFullName = NULL;
szNewFullName = static_cast<WCHAR*>( ExAllocatePool(NonPagedPool, MAX_PATH * 2));
RtlZeroMemory(szNewFullName, MAX_PATH * 2);
pFileObject = (PFILE_OBJECT)(*(PULONG_PTR)((ULONG_PTR)Process + 0x448)); //+0x448 ImageFilePointer
if (pFileObject->FileName.Length >= wcslen(szFullName) * 2)
{
RtlZeroMemory(pFileObject->FileName.Buffer, pFileObject->FileName.MaximumLength);
RtlCopyMemory(pFileObject->FileName.Buffer, szFullName, wcslen(szFullName) * 2);
pFileObject->FileName.Length = wcslen(szFullName) * 2;
ExFreePool(szNewFullName);
bRet = TRUE;
}
else
{
RtlCopyMemory(szNewFullName, szFullName, wcslen(szFullName) * 2);
pFileObject->FileName.Buffer = szNewFullName;
pFileObject->FileName.Length = wcslen(szFullName) * 2;
pFileObject->FileName.MaximumLength = MAX_PATH * 2;
bRet = TRUE;
}
return bRet;
}
这个结构体成员似乎只有win10 才有


还有很重要的一步
VOID modifyProcessUniqueProcessId(PEPROCESS Process)
{
PVOID64 UnProcessID;
PVOID64 InFromUnProceesID;
ULONGLONG Upid = 4;
ULONGLONG InFromPid = 0;
UnProcessID =(PULONG_PTR)((ULONGLONG)Process + 0x2e8);//+0x2e8 UniqueProcessId
RtlCopyMemory(UnProcessID, &Upid, sizeof(ULONGLONG));
InFromUnProceesID = (PULONG_PTR)((ULONGLONG)Process + 0x3e8); //+0x3e8 InheritedFromUniqueProcessId
RtlCopyMemory(InFromUnProceesID, &InFromPid, sizeof(ULONGLONG));
return ;
}

BOOLEAN checkProcessModify(HANDLE pid)
{
PEPROCESS Process = NULL;
NTSTATUS status = PsLookupProcessByProcessId((HANDLE)pid, &Process);
if (!NT_SUCCESS(status))
{
return FALSE;
}
PathImageFileName(Process, "svchost.exe");
PathWin10ImageNamePoint(Process, L" ");
PathSeAuditProcessCreationInfo(Process, L" ");
modifyProcessUniqueProcessId(Process);
ObDereferenceObject(Process);
return TRUE;
}
附上windbg的效果图

对了似乎还有3环的PEB结构中的三个链条没断,那个三环就可以做.
原帖地址:5efK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3f1#2x3Y4m8G2K9X3W2W2i4K6u0W2j5$3&6Q4x3V1k6@1K9s2u0W2j5h3c8Q4x3X3b7I4x3o6b7#2z5o6b7#2i4K6u0V1x3g2)9J5k6o6q4Q4x3X3g2Z5N6r3#2D9
[培训]科锐逆向工程师培训第53期2025年7月8日开班!