大多数木马、间谍软件和键盘记录工具都能够截取屏幕截图。有没有办法检测应用程序或软件是否在 Windows 中截屏?也许是 Windows API 调用或 dll?
这将有助于发现恶意软件。
大多数木马、间谍软件和键盘记录工具都能够截取屏幕截图。有没有办法检测应用程序或软件是否在 Windows 中截屏?也许是 Windows API 调用或 dll?
这将有助于发现恶意软件。
我的回答需要编写一些代码。我只是发布此答案,因为您在问题中提到了与编程相关的解决方案。
自从 Window Vista 以来,Windows 内核基本上都会为您计算机上发生的每一件事引发一个事件。Microsoft 为 .NET 提供了一个名为TraceEvent的库,它使得挂钩这些事件变得非常简单。
为了检测屏幕截图,您可以监控内存写入事件、文件写入事件等。您还可以连接到套接字 IO 等的通知。您可以在大约 30 行代码中完成所有这些工作。
从那里开始,根据您想要的侵入性和彻底性,您可以做很多事情。您可以挂钩未知进程中的调用,例如 Winsock 的send
函数,并最终抓取该进程写入套接字的所有数据的副本,然后检查它。您可以在抓取的数据中查找 JPEG 或 PNG 标头,并在找到时敲响警钟。您可以打开和分析它写入的文件等。
正是在这一点上,事情可能会变得复杂,但您可能可以将send
函数与具有一百左右 LOC 的EasyHook 之类的库挂钩。
另一种方法是查看此类应用程序需要加载哪些库/WinAPI 函数才能执行此功能。您可以检测进程何时启动以及何时使用这些内核事件加载程序集 (.dll),因此您只需查找已加载程序集的正确(或错误)组合。您可以在每个启动的进程中自动挂钩提供屏幕捕获功能的 WinAPI 或 OpenGL 或 DirectX 函数,并直接监视应用程序何时访问这些功能。
有关此通用方法的更多信息,您可以在此处查看我的其他答案。
我想明确一点,我唯一宣传的简单就是直接连接到操作系统的核心并获得有关正在发生的事情的通知的过程。正确使用这些数据来有效捕获恶意代码是一项非常困难的任务。
您可以通过监视可用空间(非常容易)或文件写入(不是那么容易)来检测它。屏幕截图必须存储在某个地方,因此文件必须堆叠到一个不太明显的位置。
这是我使用的方法,我仅使用一个简单的文件管理器就设法找到并消除了多记录器。