C ++从没有OpenProcess的进程获取句柄()

时间:2016-08-01 22:06:01

标签: c++ handle

您好我想知道如何从流程中获得具体的处理方式。

我的意思是我有能为我注入过程的所有内容。 " example.exe"它有处理各种其他进程,我想要处理" exampleHandle.exe"哪个" example.exe"已经有了。

基本上我会"窃取"手柄,所以在不打开新手柄的情况下拿到手柄。

这就是我用OpenProcess()

做的
void ProcMem::Process(char* ProcessName)
{
    HANDLE hPID = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
    PROCESSENTRY32 ProcEntry;
    ProcEntry.dwSize = sizeof(ProcEntry);
    do
        if (!strcmp(ProcEntry.szExeFile, ProcessName))
        {
            dwPID = ProcEntry.th32ProcessID;
            CloseHandle(hPID);
            hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
            return;
        }
    while (Process32Next(hPID, &ProcEntry));

    cout << "\nCouldn't find process\n";
    system("pause");
    exit(0);
}

1 个答案:

答案 0 :(得分:1)

即使您将把手从一个过程移动到另一个过程。您仍然遇到句柄值的问题,这些问题可能仅在最初打开它们的进程中有意义。

如果您不使用OpenProcess(),则最终会使用DuplicateHandle()

见这里:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724251(v=vs.85).aspx