从网上找了一些线程注入的例子,但是经调试发现所有的都是注入后被注入的程序就崩溃了,谁知道为什么?谁有真正可用的代码给一段???

解决方案 »

  1.   

    我可以给你一个线程注入的例子,如果需要请给我发mail:[email protected]
      

  2.   

    DWORD __stdcall threadProc(LPVOID lParam)
    {
        while(1)
        {
            Sleep(1000);
        }    return 0;
    }
    注入的线程如上,把While循环去掉就没事,否则被注入程序立刻崩溃。
      

  3.   

    threadProc 怎么调用的? 
      

  4.   

    HANDLE hRemoteThread = CreateRemoteThread(
              hTargetProcess, NULL, 0, (DWORD (__stdcall *)(void *))pRemoteThread, 
              pRemoteParam, 0, &dwWriteBytes);
      

  5.   

    个人觉得这样写的话 由于Sleep线程是不能正确结束的
    如果要实现每隔一定时间做某个事情 一般在MFC中我用Timer
      

  6.   

    sleep()函数引起的休眠状态无法被唤醒,除非休眠时间到。或者线程被强制终止。
    如果想实现休眠功能,应该用线程挂起,在线程中获得指向自身的线程指针,用SuspendThread()函数来挂起线程,用ResumeThread()函数来唤醒。这个是别的地方转来的 希望对你有帮助。
      

  7.   

    呵呵,那你倒底要还是不要啊!你说的这个功能我已经写好现成的例子了,编译就能使用,能把自己写的DLL注到你想要注入的EXE中,至于你还想要写一些别的东西那你就在DLL中加就可以了,呵呵!要是需要的话请给我发mail,我通过mail发给你。
      

  8.   

    还有提醒一下,不要用循环,用WaitForSingleObject或WaitForMultipleObjects,在说了,你根本没有必要在里面加线程,你是想在里面做一个HOOK是吧!如果是这样的话我可以明确的告诉你,这个方法不行。
      

  9.   

    我不是想做HOOK,我是想让它监视我的一个服务程序,一旦被停止就重新启动。
    我给你发邮件了,麻烦你把那个例子发给我吧!