3

有什么方法可以使文件完全不可编辑和不可删除?我正在创建简单的防病毒程序,我想保护我保存在文件中的恶意软件签名。

4

4 回答 4

5

简短的回答是“你不能”。长答案如下。=)

您可以通过文件权限来实现它,但如果进程具有足够的权限,则可以更改这些权限。

TMK,实现这种限制的唯一方法是保持进程运行,文件以独占模式打开。不过,这不会阻止像Unlocker这样的应用程序终止您的主进程或删除块句柄。

于 2013-08-17T16:44:48.177 回答
3

不,你不能。如果软件以足够的权限运行,它将能够与您的防病毒软件一起删除它们。商业防病毒软件也会发生这种情况。

为了至少防止修改,您可以做的是将定义存储为压缩、签名和加密。这样,除非恶意软件能够获得加密密钥,否则它无法对病毒库进行有意义的修改,只能将其删除。在这两种情况下,您的软件都可以检测到干预并尝试做出反应(但如果恶意软件有足够的权限删除系统文件,可能已经太迟了)

于 2013-08-17T18:37:37.547 回答
1

你不能真的这样做,但你可以尝试智胜恶意软件......

  1. 保存文件的校验和,以便您知道它是否被篡改。
  2. 对文件使用异步加密(有点类似于 1.)
  3. 使签名可通过 Internet 访问下载,并使您的软件下载那些...
  4. 检查文件的最后访问时间。

还有更多类似上述四个的技巧,但它们都不是布尔证明......

一个我真的不知道如何实现的疯狂想法……但我想到的是:
您可以创建一个 SATA/IDE 驱动程序并使特定文件无法访问……
但这又是我的一种创造力疯狂谈话:)

于 2013-08-17T18:56:10.220 回答
1

使用 C# 可以做的最好的事情就是设置文件的权限,以便只有您的服务具有完全访问权限,而其他任何人都没有。这并不能防止某人/某事设法获得管理员访问权限,因为他们总是可以更改权限。

许多防病毒软件为自我保护其文件和服务所做的是安装内核模式驱动程序,以阻止关键文件和进程,因此即使管理员也无法阻止它们。当然 C# 无法创建它们。

于 2013-08-17T19:12:18.050 回答