自我复活是指两个文件互相检查吧,太占用资源了。
我记得以前哪里看过提权的,好像是一个dll,我只要进程结束不了就可以了。

解决方案 »

  1.   

    简单的方法,Hook函数OpenProcess,不过只能避免ring3下的kill,比如任务管理器之类的
      

  2.   

    HOOK NtTerminateProcess,这个要在ring0下做,效果比ring3的好,但是比ring3的要麻烦得多
    那个提权的可能是System权限吧,进ring0一般是sys驱动或者汇编占多数
      

  3.   

    那还不如Hook NtOpenProcess和NtOpenThread,你HOOK NtTerminateProcess,人家在ring3可以把你线程一个一个全部结束掉
      

  4.   

    ring0不太稳定吧,我以前试过会蓝屏,可能是自己哪里不对吧
      

  5.   

    学习了,以前一直是这么做的,据说这种方法通用一些,HOOK NtOpenProcess好像是个比较冷门的方法,似乎没怎么听说过
    不过似乎挺有用的
      

  6.   

    说实在的,你hook哪个都没用,从你的描述“自己不被其它程序关闭”可知,你是想你的程序一直活着,要知道程序死掉可以有2种方法的,一是被杀,一是自己死掉,如果自己死掉了,你hook了那么多也百无一用,所以你的目的是要让程序一直活着,要达到这个目的,可以说你的方向是不对的,楼上有几位的方向是对的。要保持程序一直活着,应该用一下几种方法:
    1,保证你程序的健壮,如果你的程序本身不健壮,比如说内存泄漏太过分,那任何办法都没用,老大(OS)马上就把你kill掉,这时你的hook还有用吗?
    2,自身备份,一个死掉,备份程序马上启动,同时启动另一个备份,以此循环
    3,监控狗,程序启动,启动监控狗,如果监控狗被杀,马上启动另一个监控狗,如果程序被杀,监控狗会发现,马上启动新程序。
    只要做到以上几点,一般情况下,你的程序是不会轻易从task manager里消失的
      

  7.   

    我又学了杀进程的代码,SeDebugPrivilege权限也不能杀掉的进程,但Wsyscheck可以杀掉,icesword也可以,有没有更高级的杀进程代码啊?类似Wsyscheck或icesword的?
      

  8.   

    这个实用啊
    用这个方法,需要程序周期性的把自己的状态记录在数据文件里,被杀后,下一次启动起来先从数据文件里Load上次的状态,再跑起来。可以模拟出“好像没死一样”的样子。
      

  9.   

    现在还没有"不能被杀死的进程"(系统本身某些进程除外).无论你是用ring 0中进行保护还是什么其它方法,只要程序放出来,人家就能杀,这只不过是将"战场"放到内核了.你在ring 0中无论是用hook还是DKOM等方法进行保护,人家一样可以在ring 0中将你的保护解除.最简单的方法就是在ring 3下,将自己的进程和设备挂钩(和XP/2003中的svchost.exe一样),一被强杀就蓝屏重启,而程序自己自然结束,则不会蓝屏重启(自然结束前自然要将进程和设备脱钩).这是一种极流氓的方法,不需要使用驱动或进入ring 0什么的.
      

  10.   

    Hook函数OpenProcess,不过只能避免ring3下的kill,比如任务管理器之类
      

  11.   

    http://download.csdn.net/sort/tag/TerminateProcess