【问题标题】:How to read explorer folder address?如何读取资源管理器文件夹地址?
【发布时间】:2012-09-08 06:43:46
【问题描述】:

我使用 AVG,它最近检测到病毒。以前有过;)但这是我第一次注意到这一点。

当我进入包含病毒的文件夹时,AVG 立即自动检测到病毒,甚至无需我点击应用程序。所以我想即使我什至没有点击(单击)它,它怎么会知道病毒存在。

唯一可能的答案是它不断检查所有窗口的资源管理器文件夹位置并扫描文件夹中的所有文件。但是它如何查看我正在查看的文件夹?

请(如果可能的话)用一个 C 程序来解释 AVG 曾经做过的事情。

另外:如果有帮助,我会使用 Windows。

【问题讨论】:

  • 病毒检查器挂钩到 Windows 用来读取文件和文件夹的系统调用。因此,当 Windows 检测到您正在查看文件或文件夹时,病毒检查程序就会运行。
  • 能用代码解释一下吗?
  • 代码如何挂接到操作系统?这就是病毒、蠕虫、rootkit 和病毒检查程序所做的事情。

标签: c++ c directory explorer antivirus


【解决方案1】:

当您打开一个文件夹时,会执行一系列文件系统操作(您可以使用FileMonProcMon 之类的工具来查看此内容)。您的 AV 软件监控文件访问。 有多种方法可以进行此监控,例如Filter Drivers - 你可以在http://www.codeproject.com/Articles/43586/File-System-Filter-Driver-Tutorial找到一个很好的样本

所以当你打开文件夹时,杀毒软件注意到你打开了一个目录,查阅了它自己的数据,并通知你病毒。

我说的是“查阅自己的数据”,因为 AV 工具通常不会在访问文件时扫描文件——它们会在文件被写入时进行扫描,因为扫描标记为干净的文件没有意义,如果自上次扫描以来,它们没有改变。

【讨论】:

【解决方案2】:

大多数病毒扫描程序都根据API hooks/filters 的原理运行。每当 windows 需要处理命令时,例如打开文件夹、单击窗口、执行文件等,它都会生成一个 api 调用以及一些信息,例如单击的窗口坐标或表示文件的字符串。其他程序可以请求一个或多个这些函数的钩子,这些函数基本上是说“不要执行这个函数,先把它发给我,然后我可能会把它发回去”。这是how many viruses work(例如,防止您删除它们或复制您的击键),有多少游戏/应用程序(键盘、操纵杆、拖放)工作,以及恶意软件检测器和防火墙。

后一组挂钩命令,检查任何传入的命令以查看它们是否在级别上,然后允许它们恢复或阻止它们。在这个例子中,打开文件夹很可能触发了解析目录的系统调用,扫描器也解析了它(例如“实时保护”)。要查看所有可挂钩函数以及正在使用它们的函数,请在谷歌上搜索一个名为“sanity check”的免费程序(以前称为“rootkit 钩子分析器”)。大多数红色条目将来自 windows 防火墙或 avg,所以不要太担心你会发现什么。

【讨论】:

  • 那么,出于好奇,一个 AV 会将另一个 AV 检测为病毒吗?
  • 不,因为虽然它被迷住了,但他们仍然可以分辨出它是一个已知的 AV。除了查看 API 钩子之外,AV 还会检查正在运行的程序、库、服务、系统目录等,看看还有什么正在运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 2013-08-11
  • 1970-01-01
相关资源
最近更新 更多