#include <windows.h>
#include <tlhelp32.h>
#include <psapi.h>
#include <stdio.h>
int ListProcess(PROCESSENTRY32 Processes[])
{
int p, i = 0;
HANDLE hSnapShot;
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
Processes[i].dwSize = sizeof(PROCESSENTRY32);
p = Process32First(hSnapShot, &Processes[i++]);
while(p)
{
Processes[i].dwSize = sizeof(PROCESSENTRY32);
p = Process32Next(hSnapShot, &Processes[i++]);
}
return i;
}
int main(void)
{
DWORD i;
int len;
PROCESSENTRY32 Processes[1024];
len = ListProcess(Processes);
for(i=0;i<0x4E1C;i++)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, i);
int hidden = 1;
if(hProcess != NULL)
{
int j;
for(j=0;j<len;j++)
{
if(Processes[j].th32ProcessID == i)
{
i += Processes[j].cntThreads+2;
hidden = 0;
break;
}
}
if(hidden)
{
HMODULE hModule;
DWORD dwBytesNeeded;
TCHAR ProcessName[255];
if(EnumProcessModules(hProcess, &hModule, sizeof(hModule), &dwBytesNeeded))
{
GetModuleBaseName(hProcess, hModule, ProcessName, sizeof(ProcessName)/sizeof(TCHAR));
printf("[+]Process Hidden : %s\n", ProcessName);
}
}
}
}
return 0;
}