#include <windows.h>
#include <winuser.h>
#include <tlhelp32.h>
#include <stdio.h>
void WalkHeapList(HANDLE, DWORD);
void main(int argc , char* argv[]) {
DWORD Process_TID;
HANDLE ProcessHandle;
DWORD Reserved;
PROCESSENTRY32 proc;
HANDLE snapshot;
char process_name[32]="";
int gotime=0;
proc.dwSize = sizeof(proc);
snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
Process32First(snapshot, &proc);
if(argc==2){
if(strlen(argv[1])+1 > sizeof(process_name)){
printf("No se encuentra como nombre de ningun proceso la cadena de caracteres");
exit(1);
}
else {
strcpy(process_name,argv[1]);
printf("\nBuscando a %s",argv[1]);
}
}
do {
// Buscar nombre de proceso
if(strcmp(proc.szExeFile,process_name)==0) {
if(argc==2) {
printf("\nMatando a %s:%d",proc.szExeFile,proc.th32ProcessID);
Process_TID = proc.th32ProcessID;
gotime++;
}
}
else {
if(argc==1) {
printf("\n%s:%d",proc.szExeFile,proc.th32ProcessID);
WalkHeapList(snapshot, proc.th32ProcessID);
}
}
}while (Process32Next(snapshot, &proc));
CloseHandle(snapshot);
// Obtener handle y matar
if(gotime>0) {
ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS | PROCESS_TERMINATE, FALSE, Process_TID);
TerminateProcess(ProcessHandle, (DWORD)0);
}
}
void WalkHeapList(HANDLE snapshot, DWORD PID) {
HEAPLIST32 heap;
HEAPENTRY32 block;
unsigned long heapsize;
unsigned long freesize;
heap.dwSize = sizeof(heap);
block.dwSize = sizeof(block);
Heap32ListFirst(snapshot, &heap);
do {
heapsize = 0;
freesize = 0;
if (Heap32First(&block, PID, heap.th32HeapID)) {
do {
heapsize += block.dwBlockSize;
if (block.dwFlags & LF32_FREE)
freesize += block.dwBlockSize;
} while (Heap32Next(&block));
}
} while (Heap32ListNext(snapshot, &heap));
}
En línea
que tengo q hacer con esto ?? donde lo guardo ?? o como lo creo
vale aclarar q soy newe en esto ..
p/d:
hackriano@hotmail.com aqui te dejo mi mail si me quieres ayudar ..
p/d 2 : no se burlen de lo lammer q es mi mail jaja