Вы находитесь на странице: 1из 3

/* h2hc 0day */ #include #include #include #include #include <windows.h> <tlhelp32.h> // Funes para obter lista de processo <stdio.

h> <string.h> <conio.h>

//Funes definidas int init(),abrir(DWORD pid); void procurar(),filtrar(); //Struct que contm variveis que controlam o processo da busca struct s1{ DWORD inicio,fim; int total,addr; HANDLE p; char texto[0x20]; }busca; DWORD *end; //Array com os endereos encontrados char * buffer; //Buffer int main() { if(!init()){ //Verifica se o processo especificado foi encontrado puts("Processo nao encontrado!"); getch(); return 1; } } int init() { char nome[0x20]; PROCESSENTRY32 proc; HANDLE snapshot; // Obtm o nome do processo puts("Nome do processo:"); scanf("%32s",nome); //Obtm a lista de processos proc.dwSize=sizeof(proc); snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); while(Process32Next(snapshot,&proc)) { if(strcmp(proc.szExeFile,nome)==0) //Caso encontre o processo di gitado { switch(abrir(proc.th32ProcessID)) //Tenta abr-lo { case 0: //Se aberto inicia busca procurar();

break; case 1: //Em caso de erro puts("Erro ao abrir o processo"); getch(); break; } return 1; } }

return 0; } int abrir(DWORD pid) { busca.p = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid); //Tenta abrir o pro cesso if(busca.p==0) return 1; else return 0; } void procurar(){ busca.inicio=0; //Endereo inicial busca.fim=0x100000; //Endereo final busca.total=0; //Total de endereos encontrados //Procura por algo puts("Procurar por:"); scanf("%32s",busca.texto); //Aloca espao nas variveis end = malloc(busca.fim-busca.total); buffer = malloc(strlen(busca.texto)); memset(buffer,0,sizeof(buffer)); puts("Procurando..."); for(busca.addr=busca.inicio ;busca.addr<busca>0) //Caso haja algum resultado, in icia filtro. filtrar(); } void filtrar() { int t; go: t = busca.total ; //Obtm o nmero total de elementos no array a serem filtrados (nme ro de endereos encontrados) //Obtm string de filtro puts("Filtrar: ");

scanf("%32s",busca.texto); busca.total=0; //Zera nmero de endereos for(busca.addr=0;busca.addr <t> No prximo filtro, sero filtrados, apenas os endereo s at este nmero total } } printf("\nResultados: %d\n",busca.total); //Monstra resultados getch(); system("cls"); if(busca.total > 0) //Verifica se h resultados goto go; //Volta ao filtro }

Вам также может понравиться