#include <windows.h>
#include <psapi.h>
#include <stdio.h>
long ProcessNameToPid(char ProcessName[]);
void ListModuleInProcess(long pid)
{
HMODULE hMods[64];
HANDLE hProcess;
DWORD nBytes;
size_t i;
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE, pid);
if(hProcess && EnumProcessModules(hProcess, hMods, sizeof(hMods), &nBytes))
{
size_t len = nBytes / sizeof(DWORD);
for(i=1;i<len;i++)
{
char ModName[1024];
GetModuleBaseName(hProcess, hMods[i], ModName, sizeof(ModName)/sizeof(char));
printf("[+] %s\n", ModName);
}
}
CloseHandle(hProcess);
}
int main(void)
{
long pid = ProcessNameToPid("smss.exe");
printf("Modules in Smss.exe:\n");
ListModuleInProcess(pid);
return 0;
}