Hi,
Um source um tanto quanto bobo, mas que pode servir como base para alguma coisa que eu não sei o que pode ser huahuae.
Muito bom, o programa lê um arquivo denominado "processos.txt" - que contém uma lista com nomes de processos - em seguida, é verificado se tais processos estão em execução e caso afirmativo, é retornado o nome no sistema e o PID (Process ID) do respectivo processo.
Taí:
processos.c#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h> // Variáveis e funções da API do Windows
#include <tlhelp32.h> // Listar processos
#define MAX_REG 100 // Número máximo de processos a obter do arquivo
char * regs[MAX_REG]={0}; // Array de string que contém o nome dos processo do arquivo.
HANDLE SnapShot;
PROCESSENTRY32 processo;
void erro(const char * erro) // Função que notifica erros
{
puts(erro);
system("pause > nul");
exit(1);
}
char * strlow(const char * str) // Função que converte strings para letras minúsculas
{
int i;
char *ret = (char*)malloc(strlen(str)+1);
for(i = 0;i<strlen(str);i++)
if(str[i] >='A' && str[i] <= 'Z') ret[i]=str[i]+32;
else ret[i]=str[i];
ret[i] = '\0';
return ret;
}
int main(){
int i = 0;
FILE *fp = fopen("processos.txt","r"); // Tenta abrir o arquivo de processos para leitura
if(fp ==0) erro("Erro ao abrir o arquivo de processos.");
for(;i<MAX_REG;i++){
regs[i]= (char*)malloc(0x100); //Tenta alocar espaço nas string do array
if(regs[i] ==NULL) erro("Erro ao alocar espaco em buffers");}
i = 0;
while(i < MAX_REG){
fscanf(fp,"%255s",regs[i]); // Obtém processo da lista e salva-o na string
i++;
}
SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); // Cria SnapShot -> listar processos
if(SnapShot ==0) erro("Erro ao criar SnapShot");
processo.dwSize=sizeof(processo); // Tamanho da estrutura
Process32First(SnapShot,&processo);
puts("Iniciando escaneamento...\n");
// Enquanto houverem processos em execução
while(Process32Next(SnapShot,&processo)){
for(i=0;i<MAX_REG;i++)
// Converte os nomes do processo do arquivo e do processo em execução para minúsculas e os compara
if(regs[i] != NULL && strcmp(strlow(regs[i]),strlow(processo.szExeFile))==0)
//Mostra o nome do processo e seu PID.
printf("Processo encontrado: %s\nPID: %d\n\n",processo.szExeFile,processo.th32ProcessID);
}
puts("Fim do escaneamento...");
for(i=0;i<MAX_REG;i++) free(regs[i]); // Libera espaço alocado nos buffers
system("pause");
return 0;
}
Carry on again...
Bye

.
Da para fazer usar esse programa, testar se tem algum o processo "desconhecido" rodando na maquina,
Tipow se um rootkit tiver subtistuido algum processo, aí seu programa ia e alertava que algum processo tinha sido modificado.
Sei lá mais inultio esse programa não é

ate mais