【问题标题】:process self defence like antivirus像杀毒软件一样进行自我防御
【发布时间】:2010-12-29 14:07:10
【问题描述】:

我为防御系统、防病毒、反恶意软件等编写程序。我在通过 tast manager->Kill Process 杀死防御进程时遇到问题。我测试了一些防病毒软件,但它们不允许我杀死他的进程。我只能在服务中阻止他们。我如何为我的程序创建这种防御。谢谢!

【问题讨论】:

    标签: security defensive-programming


    【解决方案1】:

    通过调用 TerminateProcess (Win32 API) 来停止进程。默认情况下,不可能杀死在与发出对 TerminateProcess 的调用的进程不同的安全上下文下运行的进程。

    可以配置用户模式运行的服务(使用服务控制管理器),以便在有人终止服务时重新启动它。但是,如果您不希望从服务控制管理器界面或使用“net stop”命令停止服务,则可以在创建服务时适当设置SERVICE_STATUS结构的“dwControlsAccepted”字段。

    还要考虑到通过预先启用调试权限可以结束任何进程,即使它是服务或系统进程。此权限分配给管理员并在访问令牌中禁用。虽然任务管理器不使用调试权限,但 KILL 实用程序(随 windows 资源工具包提供)可以。

    【讨论】:

      【解决方案2】:

      您观察到的情况对于服务应用程序来说很常见,即您需要为此提供服务。

      防病毒软件通常使用几个内核模式驱动程序(网络过滤器、文件系统过滤器等),它们具有检查用户模式进程是否可用的附加功能,如果没有,它们会重新启动它(它们还控制执行服务的状态)。

      服务还可以监视 UI 进程的存在并重新启动它。而 UI 进程又可以检查服务的状态。并行停止两个进程是相当棘手的(尽管可能),所以这个方案也可以工作。

      我猜你会使用相同的架构。

      但总的来说,rootkit 绕过了所有这些技巧,而 rootkit 是对现代计算机构成最大威胁的东西。

      【讨论】:

      • 我创建了服务,但我很容易通过任务管理器->进程->结束进程终止服务进程。也许我知道我必须在注册表中设置哪些标志来防止进程被杀,当有人尝试时,他们的消息访问被拒绝
      猜你喜欢
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多