| 107 | } |
| 108 | |
| 109 | bool GetProcessModules(HANDLE process, std::vector<HMODULE>& out) { |
| 110 | // Determine needed byte count |
| 111 | DWORD needed{0}; |
| 112 | if (!EnumProcessModulesEx(process, nullptr, 0, &needed, LIST_MODULES_ALL)) { |
| 113 | return false; |
| 114 | } |
| 115 | |
| 116 | // Get all modules |
| 117 | out.resize(needed / sizeof(HMODULE), nullptr); |
| 118 | if (!EnumProcessModulesEx(process, out.data(), static_cast<DWORD>(out.size() * sizeof(HMODULE)), &needed, LIST_MODULES_ALL)) { |
| 119 | return false; |
| 120 | } |
| 121 | |
| 122 | // OK |
| 123 | return true; |
| 124 | } |
| 125 | |
| 126 | bool IsBootstrapper(HANDLE process, HMODULE module) { |
| 127 | // Try to get name |
no test coverage detected