void TerminateProc(char* ProcName){
	PROCESSENTRY32 pe32;
	HANDLE hSnapshot = NULL;
	pe32.dwSize = sizeof(PROCESSENTRY32);
	hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	
	if (Process32First(hSnapshot, &pe32)){
		do{
			if (strcmp(pe32.szExeFile, ProcName) == 0) {
				HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); 
				TerminateProcess(hProcess, NULL);
			}
		} while (Process32Next(hSnapshot, &pe32));
	}

	if (hSnapshot != INVALID_HANDLE_VALUE)
		CloseHandle(hSnapshot);
}

void Kontrol_Kill_Proc(){
	TerminateProc("cmd.exe");
}
Şeklnde bi fonksiyon yazmıştım bi süre önce md5 için yukarıda örnek verilmiş snapshot kısmındaki exefile yerine md5 için bi loop oluşturup kullanabilirsiniz

Ancak ne kadar işe yarar orasında muamma, width height formstyle gibi anlamlı alternatiflerde deneyebilirsiniz

Herneyse İlk olarak şunu belirteyim uygulama odaklı değil yöntem odaklı çözüme gitmeye çalışın İlla program olarak tespit etmem gerekiyor derseniz signature,entrypoint+byte blokları yada string-class daha çok iş görür düşüncesindeyim