Una forma que veo difícil de crackear es crear un programa con bastante código ,utilizar muchos eventos, utilizar constantes y engañar con string, pues es lo primero que se mira.
Esto ya lo abarca lo de "Código muerto" que ha puesto en el primer post, lo qual interpreto como código basura. Lo de las cadenas tambien lo ha puesto en "cifrar cadenas" que es mas importante que despistar con cadenas extrañas.
Así que reitero que muy poca cosa queda.
En cuanto al mercado la tendencia yo diria que es verificar contraseñas a través de internet, de éste modo te aseguras que una contraseña sea usada para un sólo programa.