我向services.exe注入自己的dll,但奇怪的是OpenProcess成功了,VirtualAllocEx失败了,错误是5,拒绝访问。几天以前是可以的,现在突然不行了,很奇怪。请各位帮忙分析分析吧。提升权限代码是成功的:
HANDLE hToken; 
       LUID sedebugnameValue; 
       TOKEN_PRIVILEGES tkp;        if (!OpenProcessToken(GetCurrentProcess(), /*TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY*/TOKEN_ALL_ACCESS, &hToken)) 
       {
              return;
       }       if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue))
       { 
              CloseHandle(hToken); 
              return; 
       }       tkp.PrivilegeCount = 1; 
       tkp.Privileges[0].Luid = sedebugnameValue; 
       tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;       if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL))
      {
//AfxMessageBox(_T("提升权限失败"));
            CloseHandle(hToken);
      }打开进程也是成功的:
hProcess = OpenProcess(
PROCESS_QUERY_INFORMATION |
PROCESS_CREATE_THREAD |
PROCESS_VM_OPERATION |
PROCESS_VM_WRITE |
PROCESS_VM_READ,
FALSE, processId);出错在开辟内存的时候:
pszLibFileRemote = (PWSTR)
::VirtualAllocEx(hProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE);对winlogon.exe进行注入时是成功的,但这个services.exe不知为何。

解决方案 »

  1.   

    5 Access is denied. 
    应该是没有权限导致的
      

  2.   

    一些系统进程是不允许注入的,比如pid=0和4的
      

  3.   

    使用unlocker看看是不是被其他进程lock了。
      

  4.   


    回sandyandy(songwenchao):
     应该是权限问题,但事实是我已经提高到Debug权限了,所以才到这问的。
      

  5.   


    回sandyandy(songwenchao):
     应该是权限问题,但事实是我已经提高到Debug权限了,所以才到这问的。
      

  6.   

    注意一下你的操作系统,如果是Windows xp应该没有问题,但是如果是Vista以上由于远程线程被可以向别的Session里的进程创建,因此会失败