DWORD cbNeeded;
HMODULE hMods;
char szModName[256];
DWORD eachPID;
GetWindowThreadProcessId(trayData.hwnd, &eachPID);
HANDLE hP = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_ALL_ACCESS, false, eachPID);
EnumProcessModules(hP, &hMods, sizeof(HMODULE), &cbNeeded);
GetModuleFileNameEx(hP, hMods, szModName, sizeof(szModName));
用上面这段代码可以获得一般应用程序的模块文件名,但是没有办法获得卡巴的,查其原因,发现是EnumProcessModules返回错误,错误代码说是INVALID_HANDLE,这是怎么回事呢?还有获取卡巴图标的句柄的时候总是返回非法句柄,一直想不明白,请高手指点!
HMODULE hMods;
char szModName[256];
DWORD eachPID;
GetWindowThreadProcessId(trayData.hwnd, &eachPID);
HANDLE hP = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_ALL_ACCESS, false, eachPID);
EnumProcessModules(hP, &hMods, sizeof(HMODULE), &cbNeeded);
GetModuleFileNameEx(hP, hMods, szModName, sizeof(szModName));
用上面这段代码可以获得一般应用程序的模块文件名,但是没有办法获得卡巴的,查其原因,发现是EnumProcessModules返回错误,错误代码说是INVALID_HANDLE,这是怎么回事呢?还有获取卡巴图标的句柄的时候总是返回非法句柄,一直想不明白,请高手指点!
不是APIHOOK,而是内核层的SSDT Hook。
如果楼主想打开之,需要编写驱动进内核层调用NtOpenProcess来打开。