如何从任务管理器隐藏进程?

guy*_*man 3 java taskmanager hide

我正在开发一个Java程序,允许教师和管理员控制学生的权限和访问权限.我有一个服务器和一个客户端,但我的问题是学生可以通过taskmanager简单地关闭限制程序.我已经阻止了cmd和powershell,因此无法访问它们.我可以阻止任务管理员,但我相信这种资源比非资源更有利.

我知道rootkit可以隐藏进程,但它是侵入性的.有谁知道我可能采取的方法来解决这个问题.也许在java中创建一个隐藏基本流程的"任务管理器"?

非常感谢任何帮助或方向.谢谢.

Joh*_*rak 5

摘要

如果您可以让学生以有限的权限(非管理员帐户)运行并在系统(管理员)帐户下运行您的警卫,他们将无法杀死警卫.其余的很容易.正如Ravi Thapliyal正确提到的那样,这应该是你的第一道也是唯一的防线.如果这不是任何理由的选择......

如果你无法阻止任意软件的安装,你可以轻松做到的最好的事情是创建两个进程来监视彼此的存在并终止产生它们的进程.当一个人死亡时,另一个人应该生成两者的新副本然后自行终止.将它们命名为Tuck and Hood(或任何两个看似无关且不可靠的名称,按字母顺序彼此远离).特别是当结合看起来专业的错误信息("试图......已被发现")时,这应该阻止大多数学生.

如果您可以阻止安装任意软件,则可以阻止shift-clicks和ctrl-clicks以及其他好东西在已安装的任务管理器中执行多项选择.如果你可以使用其他更直接,更直接的篡改,你应该.或者只是阻止所有其他任务管理器并按照您的建议编写自己的任务管理器

罗宾汉和弗莱尔塔克

你可以从Robin Hood和Friar Tuck故事中汲取灵感,这两个过程很难终止.

这个病毒做的恶作剧清单是一个非常有趣的读物,但有趣的部分在这里:

......当Robin Hood被X'ed时,发生了以下一系列事件:

!X id1

id1:   Friar Tuck... I am under attack!  Pray save me!  (Robin Hood)
id1: Off (aborted)

id2: Fear not, friend Robin!  I shall rout the Sheriff of Nottingham's men!

id3: Thank you, my good fellow! (Robin)
Run Code Online (Sandbox Code Playgroud)

每个ghost-job都会检测到另一个被杀的事实,并会在几毫秒内启动最近被杀的程序的新副本. 杀死两个幽灵的唯一方法是同时杀死它们(非常困难)或故意使系统崩溃.

...

基本思想(有两个相互复兴的过程)仍然可行,但任务管理器的形式存在一个主要障碍,实际上可以同时杀死两个进程.但是,在这一点上,你已经得到了很好的防御,特别是如果这两个进程在进程列表中没有彼此相邻.当然,你不必停在两点.除非用户找到所有这些,否则他们都会幸存下来.

不要同时被杀

然而,用户可以选择多个进程并立即杀死它们这一事实是不幸的.全局禁用Shift-clicks和Ctrl-clicks会导致太多的附带损害.此外,定制的任务管理器(或适当的基于控制台的任务管理器)可以轻松绕过该任务.将世界上的每个任务经理列入黑名单,以防止多次选择 - 嗯,你玩过鼹鼠吗?

但是,如果您可以阻止任意软件的安装和执行(这几乎肯定是能够阻止所有攻击的必要条件),则可以仅定位和篡改系统中已存在的任务管理器.如果你篡改它们,你甚至不需要有两个进程来保护对方.但是,如果您有两个进程,则足以终止任务管理器的多选功能.另外,请注意他们的"杀死进程树"功能.

在对退出信号作出反应之前,过程可以花费任意多的时间.你可以想到在两个进程之间使用TCP环回来同步它们的终止,以避免它们被立即杀死.但是,当进程终止时,这不起作用,而不是告诉退出.

另一个潜在的问题是学生可能决定删除保护程序可执行文件,然后将其删除.这应该通过适当的文件锁定来处理.但是,如果您的操作系统允许这样做,您需要自己预防.但是,如果您的操作系统允许删除任意文件,即使它们当前正在运行可执行文件,所有投注都将关闭.