La vedo un po' diversa, ma questa potrebbe essere semantica!
Crack - è un difetto (crack) nel software. Crea una vulnerabilità che diventa un vettore di accesso indesiderato a un sistema o un'applicazione. I crack sfruttano il codice esistente.
Patch - è una modifica al codice di un'applicazione o di un sistema per iniettare qualcosa che si desidera. Di solito una patch può aggiungere una backdoor. La maggior parte delle volte le patch servono a risolvere problemi. Le patch cambiano il codice esistente per aggiungere ulteriore logica.
Keygen - è tipicamente un prodotto che genera chiavi di licenza per il software. Per esempio si acquista il prodotto X e viene fornito con un certificato di autenticità che permette una singola installazione. Si installa e viene richiesta una chiave di licenza, che si trova sul certificato di autenticità. Si inserisce la chiave e il software funziona come desiderato. Il vostro computer muore e reinstallate tutto, compreso il software che vi chiede di nuovo la chiave di licenza. Provi quella che hai comprato legalmente e ora ricevi il messaggio che hai fatto solo un'installazione, quindi questa chiave non è valida, vai a comprarne un'altra. Frustrato e disposto a disonorare la licenza del produttore, cerchi un keygen che ti fornisce una chiave di licenza per il software. La inserite e il software ricomincia a funzionare.
Così i crack sfruttano le falle nel software, le patch cambiano il software, e i keygen creano una licenza illegale che vi fa superare le restrizioni della licenza del software.