Manual que cree hace 7 años, antes de entrar en la uni. No sabia muchas cosas que hoy en dia ya se, pero he querido mantener el mismo lenguaje «inocente» que usaba por aquel entonces xD.
MANUAL DE INGENIERIA INVERSA (TECNICA 74/75)
Hoy es dia 1 de octubre del año 2003, empiezo un manual sobre la técnica del 74/75 para crackear, soy Cerb.
Requisitos mínimos:
– Ordenador con monitor y teclado
– Programa desensamblador (W32dasm)
– Programa editor hexadecimal (HexWorkshop)
– Programa visor de llamadas de registro (Regmon) —–> Normalmente no hace falta
– El paciente que será operado (programa a crackear)
– Un dedo y un ojo, a ser posible el cuerpo entero
0==========0
0. Introducción
0==========0
La técnica del 74/75 sólo nos servirá para juegos/programas que pidan serial o que introduzcamos el cd. La teoría es la siguiente: en el momento en que nos piden algun dato y lo introducimos correctamente (introducir serial correcto o introducir el cd) nos aparecerá una ventana de agradecimiento por haber registrado el producto, si el dato que nos piden no es correcto nos aparecerá otra ventana diciendo que el dato introducido no es correcto. Con la técnica del 74/75 lo que se hace es buscar el momento en que se abre la ventana de error y cambiar el programa para que salga la ventana de agradecimiento. Esto se hace cambiando el 74 (je) por el 75 (jne) o viceversa en la linea de codigo donde compruebe si el dato introducido es el correcto o no; asi si introducimos el serial incorrecto o no metemos el cd nos dara los agradecimientos, si introducimos el serial correcto o metemos el cd nos dara error.
0============================0
1. Búsqueda del ejecutable a crackear
0============================0
Buscamos el ejecutable que queremos crackear, debemos mirar que a veces lo que tenemos que modificar no es el «.exe» que arranca el juego, sino que es algun otro «.exe», «.dll» u otro archivo de apoyo. Para saber cuál es el archivo que necesitamos abriremos el REGMON. Con este programa veremos las llamadas al registro que hacen todos los programas abiertos en un momento determinado en nuestro ordenador, asi veremos que al pedir el serial o al pedir el cd llama al «.exe» del juego o a otro archivo de apoyo.
0=================0
2. Copia de seguridad
0=================0
Cuando tengamos el archivo que debemos modificar, le hacemos una copia de seguridad en la misma carpeta, a este le cambiamos el nombre añadiendole una «coletilla» y dejandolo como el archivo original. Ejemplo: «Copia de WinZip.exe», la coletilla es un grupo de caracteres que se ponen al final del archivo (antes de la extension) para diferenciarlo de otro que se llame igual «WinZip().exe».
Con la coletilla conseguiremos dos archivos iguales pero con diferente nombre para no haber confusion.
0========0
3. W32Dasm
0========0
El W32Dasm es un programa desensamblador (saca el código del programa y lo muestra en lenguaje ensamblador/»asm»).
Arriba a la izquierda en la barra de Disassembler pinchamos en «Open file to disassemble» y buscamos el archivo que teniamos que crackear «WinZip().exe» (el que tiene la coletilla). Se nos mostrará el código del exe en asm. Arriba en la barra de herramientas a la derecha pone «Strn Ref», pinchamos ahi para ver las variables que contiene el código, si este botón no está activado olvidaos de hacer el crack con la técnica 74/75 :(. En el «String Data Reference» buscamos el mensaje de error que se nos dio al introducir el serial incorrecto o al no meter el cd, (si no está el mensaje olvidaos también de poder crackearlo con esta técnica :P). Cuando tengamos la variable detectada pinchamos doble click sobre ella para que nos direccione hasta donde se encuentra, cerramos la ventana del string data reference y nos fijamos en la variable de error.
El asm es un lenguaje antiguo muy difícil de programar, el código de sus programas está ordenado por números en hexadecimal «0123456789ABCDEF».
Teniendo la variable miramos un poco más arriba hasta que veamos un «Referenced by a (U)nconditional or (C)onditional Jump at Address:», esto significa que las direcciones que hay debajo de esto es desde donde ha saltado, al lado de la dirección habrá una C o una U, si es C es un salto condicional (se puede hacer algo por cambiar el salto), si es una U es un salto incondicional (no hay condiciones no hay posibilidades). Por tanto apuntaos en un papel todas las direcciones que tengan la C. Cuando tengamos una dirección con C la buscamos (más arriba) y vemos si tiene la letra je o jne y si en la linea de arriba se produce una comparacion, ahi es donde se compara el dato introducido y el correcto, tendremos que poner que si el dato introducido es igual al correcto no vaya a los agradecimientos…
Las comparaciones se pueden hacer con «cmp» o «test», se compararan dos registros «eax, ebx, ecx…»
Colocándose en la línea del salto je/jne (74/75) miramos en la barra de estado y apuntamos los números que hay a continuación de «Offset» sin contar la «h». Esta es la posición de esa línea si estuviese el archivo «deshexadecimalizado». La apuntamos y pasamos al siguiente punto.
0===========0
4. HexWorkshop
0===========0
HexWorkshop es un programa editor hexadecimal, hace lo mismo que el W32Dasm pero no pasa a asm, sino que pasa a hexadecimal.
Con este programa hacemos lo mismo, buscamos el archivo pero esta vez el que no tiene coletilla y lo «deshexadecimalizamos». Se nos mostrará el archivo en hexadecimal :S
En la barra de menú buscamos donde ponga «goto» y pinchamos, se nos abrirá una ventana, introducimos el número del offset que teníamos de antes y seleccionamos «hexadecimal», pinchamos en aceptar y nos llevará al punto donde nos preguntaban el serial.
Alli veremos un 74 o un 75, si es 74 cambiamos a 75 y viceversa, guardamos cambios y probamos el «WinZip.exe», si funciona bien, borramos el «WinZip().exe» y está crackeado, pero si no funciona tendremos que mirar otra dirección diferente de la que habiamos escogido en el salto condicional y repetir los pasos. Si con ninguna de estas direcciones funciona, buscad el mensaje de agradecimiento en vez del de error y repetid los pasos.
0===================0
5. Tabla de equivalencias
0===================0
En asm el 74 se escribe je y el 75 jne. 74 y 75 son letras de hexadecimal que significan que debe saltar (74) o no (75).
Existen otras formas de expresar eso, en vez de 74/75 pueden ser otros numeros. En esta tabla se muestran todas las posibilidades que pueden haber.
Hexadecimal Assembler Significa
75 o 0F85 jne Salta si no es equivalente
74 o 0F84 je Salta si es equivalente
EB jmp Salta directamente a
90 nop ( No OPeration ) Sin operación
77 o 0F87 ja Salta si esta sobre
OF86 jna Salta si no esta sobre
0F83 jae Salta si esta sobre o igual
0F82 jnae Salta si no esta sobre o igual
0F82 jb Salta si es inferior
0F83 jnb Salta si no es inferior
0F86 jbe Salta si esta debajo o igual
0F87 jnbe Salta si no esta debajo o igual
0F8F jg Salta si es mayor
0F8E jng Salta si no es mayor
0F8D jge Salta si es mayor o igual
0F8C jnge Salta si no es mayor o igual
0F8C jl Salta si es menor
0F8D jnl Salta si no es menor
0F8E jle Salta si es menor o igual
0F8F jnle Salta si no es menor o igual