/* Lists all modules loaded by every process (permissions allowing of course) */ #include #include #include int wmain() { HANDLE hProc = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hProc != INVALID_HANDLE_VALUE) { PROCESSENTRY32 pe = {sizeof(pe), 0}; if(Process32First(hProc, &pe)) { do { HANDLE hMods = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID); if(hMods != INVALID_HANDLE_VALUE) { MODULEENTRY32 me = {sizeof(me), 0}; if(Module32First(hMods, &me)) { std::wcout << L"Modules for " << pe.szExeFile << '\n'; do { std::wcout << PathFindFileName(me.szModule) << L"\t0x" << PVOID(me.modBaseAddr) << L'\n'; } while(Module32Next(hMods, &me)); } else { std::wcout << L"Module32First failed for pid " << pe.th32ProcessID << L" (" << pe.szExeFile << L") - " << GetLastError() << L'\n'; } std::cout << std::endl; CloseHandle(hMods); } else { std::wcout << L"Couldn't enum modules for pid " << pe.th32ProcessID << L" (" << pe.szExeFile << L") - " << GetLastError() << L'\n'; } } while(Process32Next(hProc, &pe)); } else { std::wcout << L"Process32First failed - " << GetLastError() << L'\n'; } CloseHandle(hProc); } return 0; }