如果没有从VS

时间:2015-07-16 19:42:50

标签: c++

我制作了一个简单的注入器和一个内置OpenProcess函数的dll。从Visual Studio 2012开始工作,OpenProcess()返回正确的句柄,但是当我用exe注入dll时,OpenProcess()找不到正确的句柄。你能告诉我为什么吗? 编辑:

  DWORD WINAPI Function( LPVOID lpParam  )
   {
        pe32.dwSize = sizeof(PROCESSENTRY32);
        HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

        if (Process32First(snapshot, &pe32) == TRUE)
        {
            if (Process32Next(snapshot, &pe32) == TRUE)
            {
                if (_stricmp(pe32.szExeFile, "my.exe") == 0)
                {  
                    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
                    if(!hProcess)
                        {
                        MessageBox(NULL,"Error","",0);
                    }

                    else {
  for(;;)
    {
    ...
        }
}}}}}

当我注入dll时,我得到了消息框。 GetLastError返回“拒绝访问”。

1 个答案:

答案 0 :(得分:0)

设置OpenProcess()dwDesiredAccess参数。

看看下面的例子:

Taking a Snapshot and Viewing Processes

如果它不起作用,请发布一些代码并尝试以管理员身份运行您的流程。