--

ESTUDIO COLECTIVO DE DESPROTECCIONES
WKT Tutorialz Site
WKT
progrAmA Commandos Behind the Enemy Forces W95
DEsCripCión Juego de Estrategia/Acción
tipo Programa Comercial
protECCión Cd-Check. Obliga a poner el Cd para jugar.
DiFiCultAD 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
hErrAmiEntAs SoftIce 3.22, IDA Pro 3.75, Editor Hexadecimal
CrACkEr Mr.Brown
FEChA 15 de Agosto de 1998

Introducción
El programa obliga a tener que poner el CdRom para jugar.
Así que vamos a eliminar el Cd-Check.

Al Atake
Después de repasar la lista de BreakPoints más típicos (ver Documentos Genéricos), me decido a probar con BPX GetDriveTypeA

Así pues, ejecuto el Commandos, y después me voy al SoftIce(Ctrl+D) para poner el BreakPoint(BPX GetDriveTypeA), y vuelvo al juego(F5)

Ahora voy a empezar una nueva misión para provocar el cd-check.
Ok, aparezco en el SoftIce gracias al BreakPoint.

Gracias la orden del SoftIce P RET(F12), se pueden ver las rutinas por las que va pasando el programa.
Como además tengo el programa desensamblado con el IDA 3.75 Pro, se puede deducir que la la rutina que empieza en :4CE880 viene a ser algo así como Valida_AFPs.

Lo que hace esta rutina es buscar en todas las unidades los ficheros tbtp.AFP, bbvn.AFP, etao.AFP y btbw.AFP, y comprobar el byte que contienen.
Finalmente, devuelve EAX=1 si la verificación está OK, y EAX=0 si es errónea.

Como parece que los bytes leídos sólo se usan en ese momento para comprobarlos, lo único que importa de la rutina es que devuelva EAX=1.
Para ello, en :4CE880 pongo :
:4CE880 xor eax,eax
:4CE882 inc eax
:4CE883 jmp 4ce9b0

Para dejar los cambios en el fichero exe, el IDA me indica el offset.
Así que con un editor hexadecimal(UltraEdit32 p.ej.), en la posición CDC80, cambio
83 EC 0C A1 50 5F 60 00, por 33 C0 40 E9 28 01 00 00

Nota aclaratoria para los ke no sepan usar un editor hexadecimal

Un lo ke hace normalmente es modificar el fichero .EXE, ke es el ke contiene las instrucciones en código máquina (o sea, toda una serie de bytes, ke son los ke hacen funcionar el programa).

Si intentas editar un fichero ejecutable(.EXE) con el Word, el Write, el Notepad,o similar, no podrás verlo bién. Para ello necesitas lo ke se llama un editor hexadecimal, ke es un programa ke te permite editar los bytes de cualquier fichero. Hay muchos editores hexa, algunos gratuitos y otros shareware, como por ejemplo el UltraEdit32, el Hview, el HexWorkShop, .....

Al editar un fichero .EXE con uno de estos editores, verás muchas parejas de números ( y letras de A hasta F), cada una de ellas es lo ke se llama un byte.
Para crackear un programa, deberás saber cuales son los bytes ke tienes ke cambiar. En este caso, lo sabes ;-) :
>>Para dejar los cambios en el fichero exe, el IDA me indica el offset.
>>Así que con un editor hexadecimal(UltraEdit32 p.ej.), en la posición CDC80, cambio
>>83 EC 0C A1 50 5F 60 00, por 33 C0 40 E9 28 01 00 00

Así pues, en este caso deberás ir a la posición CDC80. (es un número en formato hexadecimal).
Todos los editores tienen una opción para ir a una posición determinada.
Podrás comprobar ke realmente estás en la posición correcta, verificando que son los bytes a cambiar : 83 EC 0C A1 50 5F 60 00
Si has encontrado estos bytes, deberás cambiarlos por 33 C0 40 E9 28 01 00 00

Entonces salvas los cambios (mejor si te has hecho una copia de seguridad del fichero, por si acaso....;-), y ya tienes el programa crackeado. ;-)
Espero ke te sirva la explicación. Lo único ke necesitas, es un editor hexadecimal.
Si todavía no tienes ninguno, te recomiendo el UltraEdit32, que puedes encontrar en bastantes sitios, por ejemplo en su web de http://www.ultraedit.com