Функция 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 будет необходима в будущем


Ответы (0 шт):