如何将Win普通进程(应用程序)像System进程一样无法【结束任务】

解决方案 »

  1.   

    参考360程序,应用层无法结束360进程,他的机制是提前与其他程序启动,然后hook住杀死(结束)进程的接口。这个启动机制可以找一下相关资料(杀毒软件常用的dll接口hook机制,微软文档应该没开放这块),360会不让你hook系统DLL(所以有办法也是徒劳),方法如下。自己设计一个守护进程(monitor.exe),hook TerminalProcess接口,具体在系统哪个DLL中可以查阅msdn文档,问题是360有个安全机制,你的hook会失败。假定你不想杀死的进程为(alwaysalive.exe)守护进程先hook TerminalProcess接口,再获取alwaysalive.exe进程句柄(进程没启动守护进程就什么也别做了),当别的进程(鼠标通过任务栏操作属于系统进程)尝试结束alwaysalive.exe时,底层会调用到TerminalProcess接口,由于你守护进程提前hook了TerminalProcess接口,该调用操作会先走到你的hook接口里面,你可以通过获取当前进程句柄是否是被你允许杀死alwaysalive.exe,如果不想被他杀掉,守护进程直接弹窗提示即可。最后问题是你如果不了解dll-hook机制,可以网上先去查阅相关资料,下载一些代码,多看看。这种不让别人杀死自己的机制建议别弄了。
      

  2.   

    system是个假进程