I want to ask when we remove reference to our process using DKOM, then process is hidden as there is no reference but how can the process be executed when there is no reference to that and why processor does not reclaim memory as pointer to that part is removed?
Hello,
if you only remove the process from the list of active processes (the list is called PspActiveProcessLinks IIRC), you are not doing enough. The scheduler is mainly based on threads, not processes (there is a list of ready thredas, wainting threads, a list of standby threads and possible some more; I have never studied scheduler internals in Windows 8 and newer versions of the OS).
The list of active processes is traversed only in several cases since it is not a cheap operation in terms of complexity (O (n) ). The kernel stores an extra reference to a process object in places where a direct (and quick) access is desirable.
The old FU rootkit is known for hiding processes by removing them from the active process list. I experimented with this in the past and it seemed to me that there is no noticeable impact, in terms of hidden process' execution.
If you employ some other tricks to hide the process, put them here and we will see.
Vrtule