HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
的恶意软件样本。注册表项引用的DLL中存在恶意功能,但是此恶意软件示例不会加载或调用DLL,也不会表现出任何其他恶意行为。键?#1 楼
基本上,启动任何进程时,都会加载该注册表项中列出的所有DLL。有关详细信息,请参阅使用AppInit_DLLs注册表值。当前登录会话。
它们通常被恶意代码(不一定是恶意的)用作DLL注入的一种方式,例如钩住函数。更确切地说,正如彼得·费里指出的那样,AppInit DLL实际上仅由链接user32.dll的进程加载。
实际的注册表路径在64位和32位版本的OS之间有所不同。
因此,对于32位系统上的32位DLL,路径为: />
对于64位系统上的64位DLL:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs]
对于64位系统上的32位DLL:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs]
多个条目用空格或逗号分隔,并且出于明显的原因,DLL的路径不得包含任何空格。
在Vista和更高版本上,需要对AppInit DLL进行签名,可以将注册表值
RequireSignedAppInit_DLLs
设置为0,以禁用此要求。#2 楼
Windows 7中AppInit DLL的实现如下:在user32.dll!ClientThreadSetup
中,除LogonProcess之外的任何进程都调用从kernel32.dll导出的LoadAppInitDlls
。kernel32.dll!LoadAppInitDlls
检查LoadAppInit_DLLs
注册表项,如果设置,则调用BasepLoadAppInitDlls
(PEB的偏移量3的值为2时除外)。如果需要签名(设置了BasepLoadAppInitDlls
注册表值时),则会将AppInit_DLLs
标志传递给LoadLibraryEx。因此,通过设置此注册表项,将在设置此注册表项后启动的每个进程中注入恶意软件dll 。在以前的操作系统版本中,没有针对非GUI /控制台进程调用AppInit DLL,但至少在Windows 7上,也针对非GUI /控制台进程调用了
。
评论
更准确地说,是在加载user32.dll本身时由user32.dll加载AppInit_DLL dll,并且可以动态发生(延迟加载或手动加载)。那里也可以有多个注册的DLL。
–彼得·弗里
13年3月29日在22:36
在Vista / Windows7周围添加了AFAIK RequireSignedAppInit_DLLs,但默认情况下仍处于关闭状态,并且默认情况下仅在Windows 10更新中处于启用状态。
– NirIzr
17年9月11日15:56
我认为这不再适用于Windows 10。
–c00000fd
19年1月1日,9:56