在Win9x下,没有CreateRemoteThread和VirtualAllocEx函数,但可以用CreateKernelThread和Alloc函数代替
请大家指教

解决方案 »

  1.   

    去我主页找。
    http://nowcan.yeah.net
      

  2.   

    大哥,试了你的Win98下实现远线程出现一个大大的问题,就是死机
    在这里:
    ......
    //写入函数自身
        pRun=pfAlloc(cbTest);
    .............pRun总是为0x00000000
    于是执行下一步就死跷跷
    能解析一下吗
      

  3.   

    下面的程序段远程线程插入win9x的代码,插入成功却无实现(加载DLL)hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,processid); if(!hRemoteProcess)
    {
    ::MessageBox(NULL,"OpenProcess Error!","Error",MB_OK|MB_ICONERROR);
    CDialog::OnCancel();
    return FALSE;
    }    hDll=LoadLibrary("COMCTL32.DLL");
        if(!hDll)
        {
    ::MessageBox(NULL,"Load  COMCTL32.DLL Error!","Error",MB_OK|MB_ICONERROR);
    CDialog::OnCancel();
            return 0;
        }    pfAlloc=(PAlloc) GetProcAddress(hDll, MAKEINTRESOURCE(71));
        if(!pfAlloc)
        {
    ::MessageBox(NULL,"GetProcAddress 71# Error!","Error",MB_OK|MB_ICONERROR);
    CDialog::OnCancel();
            FreeLibrary(hDll);
            return 0;
        }
    cb = (1 + lstrlen(pszLibFileName)) * sizeof(char); 
    pszLibFileRemote=pfAlloc(cb); hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,processid); iReturnCode = WriteProcessMemory(hRemoteProcess,pszLibFileRemote, (PVOID) pszLibFileName, cb, NULL);  CloseHandle(hRemoteThread);    if(!iReturnCode)
        {
    ::MessageBox(NULL,"WriteProcessMemory Error!","Error",MB_OK|MB_ICONERROR);
    CDialog::OnCancel();
            return 0;
        }    hKernel32=LoadLibrary("KERNEL32.DLL");
        fCreateKernelThread=(PCreateKernelThread) GetProcAddress(hKernel32, "CreateKernelThread"); ::MessageBox(NULL,"线程插入成功,请关闭窗口","yes",MB_OK|MB_ICONERROR);
      

  4.   

    我的DLL.DLL只是实现一个弹出对话框的功能
    BOOL APIENTRY DllMain( HANDLE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
    {    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH: ::MessageBox(NULL,"TEST","TEST",MB_OK);
    break; case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    break;
        }
        return TRUE;
    }