Lo veo un poco diferente, pero esto podría ser semántica!
Crack - es un defecto (grieta) en el software. Crea una vulnerabilidad que se convierte en un vector de acceso no deseado a un sistema o aplicación. Las grietas se aprovechan del código existente.
Parche - es un cambio en el código de una aplicación o sistema con el fin de inyectar algo deseado. Normalmente un parche puede añadir una puerta trasera. La mayoría de las veces los parches son para solucionar problemas. Los parches cambian el código existente para añadir lógica adicional.
Keygen - es típicamente un producto que genera claves de licencia para el software. Por ejemplo, usted compra el producto X y viene con un certificado de autenticidad que permite una única instalación. Usted instala y se le pide una clave de licencia, que está en el certificado de autenticidad. Se introduce la clave y el software funciona como se desea. Tu ordenador se muere y vuelves a instalar todo, incluido el software, que vuelve a pedirte la clave de licencia. Pruebas la que compraste legalmente y ahora recibes el mensaje de que sólo tuviste una instalación, así que esta clave no es válida, ve a comprar otra. Frustrado y dispuesto a deshonrar la licencia del fabricante, buscas un keygen que te proporciona una clave de licencia para el software. La introduces y el software comienza a funcionar de nuevo.
Así que los cracks explotan los defectos del software, los parches cambian el software y los keygen crean una licencia ilegal que te permite pasar las restricciones de la licencia del software.