none
[保护进程]求高人用C++保护某一进程以防它被杀 RRS feed

  • 问题

  • //这个是一个主文件,可以直接按这个写,直接写一个头文件protect.h即可
    #include <iostream>
    #include "protect.h"
    //请高手定义一个头文件即可
    //其中包括三个函数:
    //1、void ProtectProcess(const char * strProcessName);
    //2、void ProtectMyselt(void);
    //3、HideMe();
    //其中第一个是通过进程名保护某一进程(如果有多个同名进程,则全部保护)
    //第二个是保护自己
    //第三个是将自己的控制台隐藏
    //具体如何以确定的方法退出我还没有想好,如果高手……可以自己加上
    //谢谢!
    int main(void)
    {
    using std::cout;
    using std::endl;
    using std::cin;
    cout << "请输入进程名:" << endl;
    char *strProcess = new char[20];
    cin >> *strProcess;
     ProtectProcess(strProcess); //从这里调用保护进程
     ProtectMyself(); //从这里保护自己
     HideMe(); //隐藏窗口
     cin.get(); //伪无限等待——可以让自己永远不退出
     delete [] strProcess;
    return 0;
    }

    //以上为主程序代码……指点一下也行,希望能发到我的邮箱内
    //我的邮箱:sdflysha@qq.com
    //这是我在百度百科上发过的一个问题:http://zhidao.baidu.com/question/142708476.html,也一样的
    //非常感谢!

    2010年3月20日 10:51

答案

  • 通过学习怎么加载驱动,我现在已经知道了。原理是将系统的几个OpenProcess用驱动HOOK掉,将遇到那些进程时都让OpenProcess失效!也算问题解决吧!
    • 已标记为答案 Flysha 2010年4月18日 2:12
    2010年4月18日 2:12

全部回复

  • 没有什么能防止用户用光盘启动Linux杀掉你的进程的EXE。编写用户需要的程序,而不是编写用户不需要的程序。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年3月20日 13:23
    版主
  • Windows下是不可能的,其他操作系统也一样,除非你自己写的系统:)
    0xBAADF00D
    2010年3月20日 14:09
    版主
  • 谢谢!……虽然攻与防是相对的,但我这的希望是只要有一个“程度”就行了。即希望通过这个程序
    我将不能用:

    1、Windows XP的任务管理器退出
    2、用taskkill -f -im xxxx.exe的方式退出
    3、用ntsd -c q -pn xxxx.exe的方式退出

    只要能防杀以上三种方式即可

    ……稍加指导也行,这个程序确实实用,我是在为机房计费系统工作,计费系统如果异常退出用户将能绕过计费系统实现免费上机。
    谢谢了!

    2010年3月21日 1:08
  • 可否让一旦该进程被杀就死机(或者蓝屏)?……虽然这是一种很不友好的做法……

    2010年3月21日 1:11
  • 可以在服务器上做断网……

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已建议为答案 longjmp 2010年3月28日 13:33
    2010年3月21日 2:49
    版主
  • 这三种方式写驱动就可以搞定啊,你可以尝试搞下360安全卫士试下,或者是写一个进程的守护进程注入到explorer.exe等正常进程里面。
    微软技术,世界动力
    2010年3月22日 18:37
    版主
  • 可以在服务器上做断网……

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP


    这着好!够狠:)

    原来还见过程序被关直接重起计算机的……

    关于保护的话,用不着写什么驱动那么复杂,把他写成系统服务就可以了。


    0xBAADF00D
    2010年3月23日 13:41
    版主
  • 可否让一旦该进程被杀就死机(或者蓝屏)?……虽然这是一种很不友好的做法……

    我记得PubWin EP某一个版本就是这样,进程被结束之后5分钟内就会蓝屏
    2010年3月24日 11:25
  • 启动一个监视进程不行么,反正是自己开发,信任的产品,可以不用被杀毒软件杀掉。

    我感觉用3进程相互保护就应该可以较好解决你这个问题。

    2010年3月29日 3:04
  • 通过学习怎么加载驱动,我现在已经知道了。原理是将系统的几个OpenProcess用驱动HOOK掉,将遇到那些进程时都让OpenProcess失效!也算问题解决吧!
    • 已标记为答案 Flysha 2010年4月18日 2:12
    2010年4月18日 2:12
  • 斑竹 我有个问题请教你  我是用vc++6.0 编译虚拟界面好 还是用c build好呢!  我想用麦克风作为信号输入端 接入到自己的笔记本电脑上 然后在虚拟界面显示实时的波形或者数据(比如声音的频率,样数)  还有我很想问下 这个程序编写出来在c++6.0显示出虚拟界面了 如何让它与麦克风形成关系呢?   谢谢了

    2010年4月20日 8:28