注册表Winlogon路径被恶意劫持表现为登录异常、Explorer崩溃等,需检查并修复Userinit、Shell、GinaDLL、Notify等键值,清除非法DLL路径及Image File Execution Options劫持项。

当系统登录后自动弹出未知窗口、桌面图标异常消失、Explorer进程频繁崩溃,或发现Winlogon.exe在任务管理器中以当前用户身份运行(而非SYSTEM),极可能是注册表中Winlogon路径被恶意劫持——攻击者通过篡改Userinit、Shell、GinaDLL等键值实现持久化驻留,必须逐项排查并清除。
定位Winlogon下所有可疑键值
按下Win + R,输入regedit回车,以管理员身份打开注册表编辑器。
导航至路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon。
逐项检查右侧窗格中以下键值的“数值数据”内容:【Userinit】、【Shell】、【GinaDLL】、【UIHost】、【LogonType】、【Notify】子项下的任意DLL路径。正常情况下,Userinit应为C:\Windows\System32\userinit.exe,Shell应为C:\Windows\Explorer.exe,其余项多数为空或不存在;若发现指向C:\Users\、%APPDATA%\、Temp\、ProgramData\等非系统路径的exe/dll文件,立即记录完整路径。
特别注意Notify子项:右键点击Notify→选择“展开”,查看其下的每个子项(如wgalogon、igfxcui等)是否包含名为DllName的字符串值——该值若指向非微软签名的DLL(如C:\Windows\System32\svch0st.dll),即为典型映像劫持入口。
清除Userinit与Shell劫持
方法一:直接修正标准值
双击右侧的Userinit,将“数值数据”严格修改为:C:\Windows\System32\userinit.exe,(末尾逗号不可省略,这是分隔符)。
双击Shell,将“数值数据”设为:C:\Windows\Explorer.exe。
方法二:删除非法追加项(仅当Userinit值含多个路径时使用)
若Userinit当前值为C:\Windows\System32\userinit.exe,C:\AppData\Roaming\svchost.exe,则必须手动删掉逗号后的全部非法路径,只保留C:\Windows\System32\userinit.exe,——【多写一个空格或漏掉逗号会导致系统无法加载桌面,必须严格校对】。
修改完成后关闭注册表编辑器,无需重启即可生效,但建议后续操作前先重启验证基础登录是否稳定。
彻底删除Notify劫持子项
第一步:确认子项归属
在Winlogon\Notify下,逐个点击子项名称(如igfxsrvc、wgalogon、winlogonhk),查看右侧是否有DllName值且路径非常规。若某子项无DllName值,或值为微软合法路径(如C:\Windows\System32\wlnotify.dll),跳过不删。
第二步:精准删除高危子项
对确认为恶意的子项(例如名称为svch0st,且DllName指向C:\Windows\Temp\shell64.dll),右键该子项→选择“删除”→点击“是”确认。
第三步:验证删除完整性
删除后,重新展开Notify,确保该子项已消失;同时检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下是否存在同名服务(如svch0st),如有,一并右键删除对应服务项——【Notify劫持常与伪装服务联动,漏删服务会导致下次开机自动重建Notify子项】。
扫描并修复Image File Execution Options劫持
在注册表编辑器中,依次展开路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options。
查看该路径下是否存在以下常见被劫持的程序名子项:sethc.exe、utilman.exe、magnify.exe、narrator.exe、osk.exe。
若存在,逐个点击这些子项,检查右侧是否有名为Debugger的字符串值;若有,且其“数值数据”不是C:\Windows\System32\cmd.exe(原厂粘滞键后门)或为空,则该Debugger值大概率指向恶意程序(如C:\Windows\System32\mshta.exe http://xxx/1.vbs)。
直接右键删除整个子项(例如sethc.exe),不要只删Debugger值——因为子项本身即为劫持载体,残留会干扰后续策略重载。
这一步操作完毕后,关闭注册表编辑器。

















