How to crack Sublime Text 3

Descripción

Sublime Text es uno de los editores de texto multiplataforma más famosos que para poder usar todas sus funciones y recibir todas las actualizaciones, hace falta comprar una licencia de 70$
Es por ello que he querido hacer este pequeño tutorial en el que explico un poco por encima como crackear este software.

Las herremientas que he usado para realizar todo esto son el desensamblador Hooper(para poder ver mas claramente como se ejecuta el programa) y Radare2(un framework para ingeniería inversa para sistemas unix).
Para empezar, tenemos que buscar el mensaje de error que se produce cuando introducimos una licencia no valida en Sublime.

El mensaje es:

"That license key doesn't..."
        

Una vez que ya sabemos como es el mensaje de error vamos a Hopper a buscar donde se produce ese mensaje de error. Para ello abrimos el ejecutable de Sublime Text con Hopper y en el buscador de cadenas de texto buscamos el mensaje de error.

Ahora tenemos que buscar desde que zona del codigo se hace la llamada a este mensaje y para ello usamos una funcion de Hooper que nos permite ver desde donde se referencia a la sección de código actual.

Como podemos ver, el mensaje de error es llamado desde la dirección 0x42f1f4.
Esa dirección de memoria corresponde a una instrucción mov, que esta dentro de una sección en la que podemos ver que se puede acceder a ella desde otra parte del código.

Si nos desplazamos a la sección que realiza el salto a la dirección 0x42f1e7 (cmp eax, 0x2) llegamos a una función de tipo je que se encuentra en la dirección 0x42f0fd.

Si vemos un poco mas arriba de la función je encontramos en la dirección 0x42f0ef una función cmp, que es la que decide si la licencia que hemos introducido es válida o no.

Si analizamos la función podemos ver que se compara el registro eax (que debe contener el valor de la clave introducida, que en nuestro caso es una invalida) con 0x1 que corresponde con el código una licencia que sea válida. Entonces, si cambiamos 0x1 por el código de licecnia invalida, la comparación sera correcta y el programa no nos mostrará el mensaje de licencia invalida.
El código de licencia invalida es 0x2, asique lo único que tenemos que hacer es cambiar 0x1 por 0x2 en la dirección de memoria 0x42f0ef.
Para cambiar ese valor he usado el framework radare2.

Para ello abro el ejecutable de Sublime con radare2 y me situo en la dirección de memoria en la que tengo que cambiar el valor (0x42f0ef).
En la fotografía anterior uso el comando pd 5 para desensamblar 5 lineas de código y ver que estoy en la instrucción correcta.

Para sustituir el valor 0x1 ejecuto el comando “wx 83f802” (wx para escibir en hexadecimal y 83f802 es la misma instruccion que había amtes solo que cambio el 01 por 02 como habiamos dicho antes).
Desensamblo 5 lineas de nuevo para ver que se ha actualizado correctamente y en teoría ahora solamente queda comprobar que realmente funciona al introducir una licencia no valida.

¡¡¡TODO FUNCIONA CORRECTAMENTE!!!

Espero que os sirva.