出于安全原因(保护知识产权),我正在尝试构建一种方法来防止某些硬盘驱动器分区/ USB 驱动器被访问。我在想,当 Windows 尝试访问“锁定的驱动器/USB”时,尝试停止并返回“驱动器无法访问”之类的东西。这只是一个想法,有人认为这是合理/可能的吗?如果是这样,任何指针?
C/C++
-谢谢
出于安全原因(保护知识产权),我正在尝试构建一种方法来防止某些硬盘驱动器分区/ USB 驱动器被访问。我在想,当 Windows 尝试访问“锁定的驱动器/USB”时,尝试停止并返回“驱动器无法访问”之类的东西。这只是一个想法,有人认为这是合理/可能的吗?如果是这样,任何指针?
C/C++
-谢谢
分区问题很简单。只需使用 ACL 来阻止某些用户的访问。
对于驱动器访问,Windows 中的某处可能有一些设置可以禁用它。在更糟糕的情况下,您可以尝试强行删除驱动程序(以及 Windows 读取驱动器/棒的能力)
您将需要编写一个过滤器驱动程序来实现您的目标。您需要将驱动程序放在磁盘驱动程序堆栈中的某个位置,并使您要阻止的驱动器/分区的 IRP_MN_START_DEVICE 失败。
您将需要Windows Driver Kit来编写驱动程序。WDK 中有一个过滤器驱动程序示例。这个邮件列表非常有用,如果您搜索档案,您会发现很多关于磁盘过滤器驱动程序的信息。
一篇关于编写过滤器驱动程序的好文章在这里,我认为您需要注册才能阅读,但是如果您想编写驱动程序,您应该在此站点上注册。
相关的书单可以在这里找到。
对于 USB 驱动器,您可以对其进行加密。
在工作中,我们使用Pointsec 提供程序,它允许您只有在有密码的情况下才能访问任何机器上的驱动器。
我确信有可用的免费软件加密产品
您也可以加密分区。
(基本上我不确定为什么要为可以通过其他方法充分管理的东西编写一些 c/c++ 代码)
您需要对驱动器进行加密,否则攻击者只需将驱动器附加到另一台机器并提取内容即可。
您不应该自己实施加密 - 依靠别人审查过的代码要好得多。我建议使用TrueCrypt来加密你的驱动器。
然后也许你想在你的应用程序中放置一个钩子,以便在它想要访问加密数据时提示输入密码。或者您在机器上安装 TrueCrypt,并让用户在他们想要访问数据时连接驱动器,这取决于使用数据的精确方式。
意识到。任何涉及内核工作的东西,如果您还没有该领域的经验,那么开发时间都会以年为单位。