Developer knowledge network · moderated exchange

Супольнасць UnreliableCode

Супольнасць распрацоўшчыкаў даследаванняў, зваротнага праектавання і кадавання

Knowledge indexжыць
4Categories
919Threads
2.8KПаведамленні
Analysis

DKOM: Unlinking EPROCESS from ActiveProcessLinks in Windows Kernel [v2.4 Technical Discussion]

kernel_komrade
Driver Dev
MEMBER
прадстаўнік: 145
Дата далучэння: Feb 2019
Паведамленні: 26
Дзякуй: 45
1 месяцаў таму · Jul 2, 2026 12:48 PM
#1

How Direct Kernel Object Manipulation (DKOM) hides processes from Task Manager:

  1. Locate target EPROCESS structure.
  2. EPROCESS.ActiveProcessLinks is a circular doubly-linked list (LIST_ENTRY at offset 0x448 on Windows 10/11).
  3. Unlink the process node:
C
PLIST_ENTRY pCurrent = &pTargetEProcess->ActiveProcessLinks;
PLIST_ENTRY pPrev = pCurrent->Blink;
PLIST_ENTRY pNext = pCurrent->Flink;
pPrev->Flink = pNext;
pNext->Blink = pPrev;
// Point unlinked entry to itself to prevent crashes on process exit
pCurrent->Flink = pCurrent;
pCurrent->Blink = pCurrent;

Target process disappears from CreateToolhelp32Snapshot and EnumProcesses instantly!

stack_smasher
Kernel Explorer
MEMBER
прадстаўнік: 111
Дата далучэння: Feb 2019
Паведамленні: 30
Дзякуй: 18
1 месяцаў таму · Jul 2, 2026 8:11 PM
#2

Remember that PatchGuard periodically verifies ActiveProcessLinks integrity, so unlinking must be temporary or done through hypervisor SLAT.

bypass_bravo
Member
MEMBER
прадстаўнік: 150
Дата далучэння: Jan 2022
Паведамленні: 2
Дзякуй: 28
1 месяцаў таму · Jul 3, 2026 10:33 AM
#3

Classic DKOM technique. Clean C code.