您好我想知道如何从流程中获得具体的处理方式。
我的意思是我有能为我注入过程的所有内容。 " 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);
}
答案 0 :(得分:1)
即使您将把手从一个过程移动到另一个过程。您仍然遇到句柄值的问题,这些问题可能仅在最初打开它们的进程中有意义。
如果您不使用OpenProcess()
,则最终会使用DuplicateHandle()
。
见这里:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724251(v=vs.85).aspx