【发布时间】:2014-03-03 04:20:01
【问题描述】:
我的任务是为我的客户创建一个软件,该软件将在后台计算某些系统统计数据(这不是前台进程)。目标平台是 Windows XP - 7,语言/技术是灵活的。但是,我觉得客户最具挑战性的要求是软件必须在 PC 启动时运行,并且必须具有防篡改功能。也就是说,如果用户尝试停止/禁用软件,客户端希望收到一封电子邮件。
我知道,在任何特定时间,都可能有人捡起机器并将其丢入河中,而我无法提醒客户发生了这种情况。我对此进行了解释,他们的回答是“如果它不重新上线,这不是问题”。我猜他们希望监控哪些系统会长时间离线并以某种方式处理这些问题。
挑战在于,如果系统已启动并运行但统计软件未运行,他们希望收到警报(例如电子邮件通知)。例如,以下场景会触发通知邮件:
a) 用户使用任务管理器杀死我的进程,然后运行其他程序。下次我的进程启动时,它应该通知它已被篡改。 b) 用户禁用在启动时启动进程的机制(例如注册表项)、重新启动机器并运行其他程序。下次我的进程启动时,它应该通知它已被篡改。
最后,客户更喜欢这是一个便携式应用,不需要安装 Windows。
正如我所说,该技术是灵活的:我们可以在 Windows 平台上使用 C++、C#.NET、WSH 或其他任何东西。我已经开发软件近十年了,但还没有遇到过防篡改的需求。所以问题是,有哪些不同的方法可以让我的 Windows 桌面程序具有篡改感知能力?
通知部分很简单,因为我可以在程序重新启动时调用外部 Web 服务并且 Web 服务可以发送电子邮件通知。棘手的部分是确定系统是否正在运行而我的程序没有运行的逻辑?
【问题讨论】:
-
您可以运行两个进程来检查他们的兄弟姐妹是否正在运行,如果没有 - 重新启动它们并通知您的客户。
-
大多数防篡改系统都需要受信任的平台,因此您需要某种 UEFI 引导加载程序来启动受信任的链(排除 XP)。
-
最好的入门方法是阅读 Punkbuster,因为它能够在停用时自行重启,nad 非常便携。
-
是否值得考虑防病毒软件使用的防篡改概念?至少,我知道用户在不使用内置功能的情况下禁用杀毒软件并不容易。我只是不确定如何分类或描述这些技术。
标签: c# c++ windows security software-design