Функция EnumProcessModules WinApi C++ не отображает инджектированные DLL
Функция EnumProcessModules WinApi C++ не отображает инджектированные DLL, сейчас я пытаюсь написать программу на С++, чтобы обнаруживать инджектированные DLL в рантайме, но все четно, EnumProccessModules возвращает только DLL, необходимые для работы приложения. Есть ли какой-нибудь другой способ обнаружить инджектированные DLL?
struct Module
{
public:
Module (const char args[14], TCHAR SModName[260], HMODULE HMod);
~Module ();
const char* arg;
TCHAR* sModName;
HMODULE hMod;
private:
};
Module ::Module (const char args[14], TCHAR SModName[260], HMODULE HMod)
{
arg = args;
sModName = SModName;
hMod = HMod;
}
const bool operator != (const Module& first, const Module& second) {
return first.arg != second.arg && first.sModName != second.sModName && first.hMod != second.hMod;
}
Module ::~Module ()
{
}
DWORD GameProccesId;
std::vector<Module> GetModules(DWORD processID)
{
std::vector<Module> Procceses;
HMODULE hMods[1024];
HANDLE hProcess;
DWORD cbNeeded;
unsigned int i;
hProcess = OpenProcess(PROCESS_ALL_ACCESS,
FALSE, processID);
if (NULL == hProcess)
throw new int();
if (EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded))
{
for (i = 0; i < (cbNeeded / sizeof(HMODULE)); i++)
{
TCHAR szModName[MAX_PATH];
if (GetModuleFileNameEx(hProcess, hMods[i], szModName,
sizeof(szModName) / sizeof(TCHAR)))
{
Procceses.push_back(Module("\t%s (0x%08X)\n",szModName , hMods[i]));
_tprintf(TEXT("\t%s (0x%08X)\n"), szModName, hMods[i]);
}
}
}
CloseHandle(hProcess);
return Procceses;
}
Данным кодом обнаруживаю все модули процесса, попутно выводя инфу о них в консоль. Структура Module будет необходима в будущем