我最近发现我在 Windows PC 上安装的代理程序(Clash for Windows)总是链接到与其功能无关的 DLL。
它的安装目录中有FFmpeg、DirectX、OpenGL和Vulkan的DLL。通过Process Explorer,我确认它确实加载了这样的 DLL(始终是 FFmpeg,但并不总是所有其他三个)。
正如我提到的,它应该只充当代理程序,并且(我能想到的)它加载低级图形 API 的 DLL 的唯一合法原因是为了其 UI 的硬件加速——但我还没有找到里面的相关设置。最重要的是,我想不出有什么理由来证明其加载是合理的FFmpeg
。
众所周知,FFmpeg 能够将视频流式传输到远程客户端,我怀疑该程序是间谍软件——它使用低级图形 API 来捕获屏幕并通过 FFmpeg 进行流式传输。
这当然是我的猜测。所以我的问题是,
- 它加载的DLL是否可以以其他我没有想到的合法方式使用?
- 有没有办法进一步调查,以获得其是间谍软件的决定性证据?
- 该程序仅以普通用户身份在我的电脑上运行。如果它确实是间谍软件,它会造成多大的损害,以及我如何才能减轻损害(例如,作为普通用户,它会留下什么样的后门)?
我真诚地感谢您提供的任何见解以及您提前投入的时间。
从应用程序的官方屏幕截图中的整体外观以及 DLL 列表中的 和 的存在
en-US.pak
(GPUCache
即,不仅仅是一般的“GPU 缓存”,而是特定的名称),我猜测该程序的接口已编写为使用CEF的东西(可能是Electron)——前者是“Chrome 嵌入式框架”,本质上只是将 Chrome Web 浏览器打包成看起来像应用程序的东西,而 Electron 是 CEF+NodeJS。(现在这是一个非常流行的选项。例如,Discord 通过 Electron 使用 CEF;VSCode 和 Steam 直接使用 CEF;Dropbox 通过 QtWebEngine 使用 CEF...这就是你耗尽 RAM 的原因。)
CEF 实际上是 Chrome-in-a-box,整个应用程序界面是一个 HTML/CSS/JS“网页”,它仍然具有 Chrome 通常具有的相同功能:GPU 加速 HTML 渲染(使用 CSS 着色器和其他奇特的东西),视频播放支持(Chrome 使用 FFMPEG 作为 <video> 标签),等等。
然而,它可能不一定是整个 UI;还有一些应用程序只需要嵌入 Web 视图来实现某些特定目的(例如登录屏幕或帮助文档),而这些应用程序几乎总是通过 QtWebEngine 或 Microsoft 的 WebView2 使用 CEF。
.pak
您可以从 CEF用于其内部资产的各种存档文件中识别它;指定的文件夹GPUCache
也是 CEF 使用的症状。(目前,我在 Linux 上的用户目录有24 个独立的“GPUCache”目录,每个目录都属于一个不同的应用程序,该应用程序要么完全基于 CEF,要么只是将 CEF 用于某些特定目的。)