如何在Windows上进行完全访问拒绝过程?

时间:2013-07-05 08:49:36

标签: security winapi

我正在制作一个家长控制监控系统的安全软件,我不希望任何用户/管理员或程序杀死我的进程。

我已尝试使用SetSecurityInfo(),但这不起作用。然后SetKernelObjectSecurity,但那也没有做我想要的。

我该怎么做?

我也希望能够清楚地解释所提供的任何代码。

编辑:如果是这样,防病毒程序如何做? 你能帮我么。我是WINAPI的新手我想知道一些简单的事情......很抱歉给你们带来麻烦,但至少你们可以向我展示一些“看门狗”过程的代码。 。 。

4 个答案:

答案 0 :(得分:5)

这不是由进程本身控制的,当然也不是由它调用一个神奇的API函数。如果是这样的话,所有恶意软件都会将自己设置为“不可杀戮”并完全打开您的系统。相反,它是可执行文件的安全属性 - 特别是“终止”权限。

您可以通过下载Process Explorer

自行探索
  1. 打开流程的属性
  2. 切换到“安全”标签
  3. 点击“权限”按钮
  4. 点击“高级”按钮
  5. 选择所需的用户或群组
  6. 更改“终止”权限的设置。
  7. 系统进程向SYSTEM用户以外的所有用户拒绝“终止”权限。这就是为什么即使管理员收到“拒绝访问”消息,因为他们缺少系统进程的“终止”权限。

    当然,即使正确设置此属性也不会使该过程“不可杀戮”。这只会让它变得更加困难。有许多软件available online for a free download允许用户杀死此类进程,任何具有Windows安全模型基本知识的人都可以在不需要特殊软件的情况下解决它。

    对于家长控制软件而言,这一点都没有多大意义。您应该使用Windows安全模型,而不是尝试使用它。以管理员身份(即父母的帐户)安装软件,然后使用受限用户帐户设置子(ren)。受限制的用户帐户将无法终止您的进程,因为他们没有必要的权限。如果管理员想要杀死你的进程,那么你应该让他们,而不是给他们一些虚假的“拒绝访问”的头痛。

答案 1 :(得分:1)

不,不可能。无论你做什么,我都可以随时关闭机器。

答案 2 :(得分:0)

首先,让我们说清楚它是不可能的。 但是,你可以让它变得更难。

此外,“Code Grey”写道我正在补充:

  1. 您可以使用另一个进程作为监视程序,并且您的进程也会监视监视程序(循环监视程序),因此如果您正在终止某个进程,它将重新运行另一个进程。你可以通过杀死你的进程和看门狗来绕过它,然后他们才有机会启动另一个进程。
  2. 1a上。攻击者可以冻结进程而不是终止它,因此(1)不起作用,所以你可以每N秒“ping”一次,如果缺少ping,就会出错(不知道如何恢复它,取决于产品。)

    1. 如果您是服务,可以设置窗口以在服务停止后恢复服务。

    2. 只是一个想法,我 不会 在产品中执行此操作。您可以在一个重要的进程(一个被调用很多的函数)中API挂钩一个重要的函数。每次调用该函数时,检查您的进程是否已启动,如果没有,请重新启动! :-P。

    3. 另一个疯狂的想法(我不会在产品中做!!!),编写驱动程序并为您的流程寻找终止事件。如果有人终止你的过程,导致蓝屏!那将显示他们! 8-P

    4. 祝你好运!

答案 3 :(得分:0)

在内核模式下挂钩NtTerminateProcess可能对您有所帮助。 PS:Hook也是NtTerminateThread,因为我记得有一个版本的NOD32防病毒软件,当杀死进程被拒绝时,杀死所有线程是可能的。 : - )