Hay varias formas de interpretar tu pregunta. Incluso así, hay una serie de enfoques, realmente demasiados para explicarlos en un breve post.
Una de las definiciones clásicas de cracking es romper la protección anticopia o la aplicación de la licencia. Una forma de hacerlo es utilizar un depurador y desensamblador para analizar el binario y encontrar la sección del programa que impone la licencia. A continuación, se modifica el binario para omitir la comprobación. Otra forma es analizar el binario y determinar cómo determina si una clave de producto/licencia es válida. Una vez que se conoce el algoritmo, se puede escribir un programa para generar claves de licencia que el programa no modificado acepte como válidas.
Otra definición de cracking es encontrar un fallo explotable en un programa que permita escribir un exploit de día cero que luego se pueda utilizar para divertirse y obtener beneficios. Para ello se utiliza una combinación de análisis manual, análisis automatizado (tanto del código fuente como del código binario) y simulación de entradas. Esto es más comúnmente llamado investigación de vulnerabilidades.
Todas estas actividades pueden ser tediosas y son generalmente difíciles. Puede llevar semanas o meses de trabajo e intentos fallidos para obtener un resultado. Hay que disfrutar del trabajo y del desafío.