我们正在将GLOALLY的TextOut(),ExtTextOut()和DrawText()方法挂钩。
即。 hhook = SetWindowsHookEx(WH_CBT,function_address,module_handle,0);
但是我们想要挂钩/取消挂钩特定的exe。有人可以告诉我们如何检查所有现有的线程并获得所需的exe和钩子/解钩器。
请提供帮助。
谢谢
答案 0 :(得分:0)
您可以使用PSAPI专门EnumProcesses
枚举流程您需要从SDK #include "psapi.h"
并将PSAPI.lib
添加到链接器输入。
例如:
DWORD aiPID[1000], iCb=1000;
DWORD iCbneeded = 0;
if (!EnumProcesses(aiPID, iCb, &iCbneeded)) return(E_FAIL);
int iNumProc=iCbneeded/sizeof(DWORD);
for(int i=0; i < iNumProc; i++)
{
// First, get a handle to the process
HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, FALSE, aiPID[i]);
if (!hProc) continue;
TCHAR szName[MAX_PATH] = _T("<unknown>");
HINSTANCE hMod = NULL;
if (EnumProcessModules(hProc, &hMod, sizeof(hMod), &iCbneeded))
{
GetModuleFileNameEx(hProc, hMod, (LPTSTR)szName, MAX_PATH);
}
CloseHandle(hProc);
}
编辑:对不起 - 这只会为您提供进程列表...以获取每个查看ListProcessThreads的线程,为每个枚举进程传入PID。