PsSetCreateProcessNotifyRoutine
调用在进程开始时发送APC调用来篡改用户空间进程。我希望避免篡改任何对操作系统稳定性至关重要的进程,因为我APC也最终决定终止该进程。 到目前为止,我已经使用
PsIsProtectedProcess
和PsIsProtectedProcessLight
来检测受保护的进程。 但是,似乎有些过程,例如
smss.exe
和crss.exe
和wininit.exe
被定义为关键过程,我也希望避免使用它们。 也许任何人都知道受保护的进程和关键进程之间的区别,以及如何从内核模式(可能在EPROCESS中具有临时字段)以编程方式检测关键进程?
感谢,
#1 楼
似乎正确的术语是关键系统服务。有来自userland的API,但是我找不到用于内核的任何东西。因此,我快速浏览了RstrtMgr.dll,似乎该列表实际上是硬编码的。对于进程:system32 \ csrss。 exe
system32 \ smss.exe
system32 \ lsass.exe
system32 \ wininit.exe
system32 \ services.exe
system32 \ winlogon.exe
对于服务(svchost.exe的特定情况):
BrokerInfrastructure
DcomLaunch
电源
RpcEptMapper
RpcSs
SamSs
可能有另一种方法可以实现。毕竟,如果杀死了这些进程之一,则Windows BSOD。 />如果将此位置1,则
nt!EPROCESS::BreakOnTermination
将对nt!EPROCESS::Flags
进行BSOD。