我在检查 Windows 10 机器上正在运行的进程时偶然发现了 rundll32 的一个实例。
这是根据 Process Explorer 启动它的命令行:
C:\Windows\system32\rundll32.exe -localserver 22d8c27b-47a1-48d1-ad08-7da7abd79617
这是什么意思?我尝试研究过这个问题,但一无所获。
这是好事还是正常?我应该杀掉它然后进一步调查吗?
答案1
我找到了这个过程的起源。它非常简单,甚至有点愚蠢。
当您播放视频(youtube 或 vlc 或其他)并使用键盘快捷键更改音量时,您会看到以下内容:
https://i.stack.imgur.com/ZLllA.png
这就是进程所做的工作。如果您重新启动,并在观看视频时更改音量,则该进程将出现在带有视频标题的滑块出现的位置。如果您终止 rundll32 进程,右侧的图片将消失。
我疯狂地试图找到这个 rundll32 到底是什么,而答案让我感到自己一开始的尝试很愚蠢
答案2
据 MSDN 上某人说,它是 Windows 的一部分,称为“进程分析性能分析程序(Windows 性能计数器程序)”
答案3
我在 Windows 10 上看到了此过程,处理用户图块(通常称为用户帐户图片)。可能它用于处理其他类型的不受信任的用户数据;我不知道。
该代码是 Windows“shell”(桌面界面)包的一部分,并且该进程以用户“NT Authority/SYSTEM”的身份运行。我认为这意味着它是登录/“快速用户切换”界面的一部分。我观察到的行为全都归咎于 Windows。我特别留意了任何(有缺陷的)第三方代码,但没有发现任何可疑的东西。
Windows Rundll32(DllHost 的子进程)崩溃了。我该如何识别它?
设想
我捕获了线程 0 的堆栈跟踪,当时它正在处理传入的 COM 请求。它显示了一个类Windows_UI_Immersive!CUserTileValidator
。我在进程崩溃时捕获了此跟踪,当时它正在处理图片。在我的心理模型中,这是一个解压缩用户图片的沙盒进程,但我预计精确的描述会更复杂。
该问题只针对一位用户:我可以通过锁定会话并以该特定用户身份登录来重现崩溃,但反过来却不行。用户的个人资料图片显示为默认图标。更改用户的个人资料图片可以停止崩溃。
我找不到-localserver
Rundll32 选项的文档。正如其他评论者所说,注册表中任何地方都找不到 UUID 值。我不知道 Rundll32 如何查找此值!术语本地服务器在谈论用于启动专用 COM 服务器进程的命令时,其他地方也会使用。(通常是DllHost.exe
,如下所述)。
技术细节
Rundll32 进程有一个父进程,即DllHost.exe
(“COM Surrogate”) 的一个实例。查看 DllHost 的命令行,该/ProcessID
参数是注册表中列出的 AppID,来自 shell32.dll,为“Shell Create Object Task Server”。两个进程都以“NT Authority/SYSTEM”身份运行。
从某种意义上来说,我所看到的碰撞是可以预料到的。DllHost.exe 旨在运行不可靠的 COM 对象。显然这是在用户会话中。我的链接没有评论不知道它保护得如何不安全COM 对象;以 SYSTEM 身份运行时尤其需要注意。