Vale, pos a encender el ordenador, a
cargar el Softice y a esperar que se carge el
Windows..... Procedamos a instalar el ReadIris Pro v5.1
(yo lo he sacado del CD de portada de PC Actual de
Octubre de 1999). Una vez instalado lo ejecutamos, y si
mal no recuerdo aparece una pantallita que nos dice que
es una versión de evaluación bla..bla..bla.. damos a OK
y nos aparece la Nag del Corte Inglés, le pinchamos
encima y aparece otra del ReadIris con el logotipo, el SN
de la demo... que desaparece al tocar cualquier tecla o
pincharle encima. Miramos los menus que tiene y no vemos
ninguna función deshabilitada ni nada... perfecto,
software completito en el disco duro...je..je..
PRIMERA PARTE: LA
ETERNA JUVENTUD
Si somos vagos lo dejamos así hasta que caduque a los
30 días y se muera, pero los ingenieros tenemos el
secreto de la eterna juventud y vamos a aplicarlo aquí.
(Se pueden ejecutar antes de arrancarlo Regmon y Filemon
por si resultara que busca algún archivo de registro,
accede al registro de windows y esas cosas... este no es
el caso). Pos fale, a subirnos en la máquina del tiempo
y a viajar adelante 30días, un año.... lo que sea con
tal de que el programa caduque.... Ejecutamos de nuevo el
R.I. y se carga como siempre ( uhm, a que va resultar que
es un farol lo de la protección ...) ...ahhh.. tras la
pantalla publicitaria que nos recuerda dónde y por
cuanto comprarlo suge un bonito MessageboxA que nos dice
amablemente que el programa ha caducado (ohhhh...).
Chachi, ya tenemos un sitio para entrar.... CTRL-D y
colocamos un bpx MessageboxA (32 bit, recordar..),
arrancamos de nuevo el programa y caemos aquí: (las
líneas que no nos interesan no las he copiado...)
*
:0048E90A 85C0 test eax, eax
:0048E90C 0F8507000000 jne 0048E919<
Salto condicional 1
:0048E912 33C0 xor eax, eax
:0048E914 E9C4040000 jmp 0048EDDD
* Referenced by a (U)nconditional or (C)onditional Jump
at Address:|:
:0048E91F E8855CFCFF call 004545A9
:0048E924 83C404 add esp, 00000004
:0048E927 85C0 test eax, eax
:0048E929 0F8598000000 jne 0048E9C7<
Salto condicional 2
:0048E92F E8F65FFCFF call 0045492A<
Supongo que la rutina de la fecha :-)
:0048E934 85C0 test eax, eax<
Comprueba si el valor es el adecuado
:0048E936 0F856D000000 jne 0048E9A9<
Salto condicional 3 - ¡¡El interruptor!!
:* Reference To: USER32.MessageBoxA, Ord:0195h|
:0048E997 FF15B8365700 Call dword ptr [005736B8] < CAEMOS AQUÍ
Si subimos en el código vemos tres saltos
condicionales... y uno hace que no se ejecute la rutina
del MessageboxA, curioso... sin duda alguna.... muy
curioso.... Manos a la obra con un poco de atención : si
ponemos nop nop (90 90) como se suele hacer en estos
casos, la rutina sigue su curso y nos echa, entonces
habrá que cambiar el salto condicional por uno
incondicional :-) . Probemos la hipótesis, escribimos bd
* para borrar todos los bpx que no nos interesan, hacemos
un bpx en 0048E936 y ejecutamos R.I. Al caer en el salto
hacemos un d 0048E936 y apuntamos el valor Hex de la
línea que aparece en la ventana del Softice (wd si no lo
ves);
a 0048E936 // jmp 0048E9A9
d 0048e936 y a copiar la línea que nos da...
F5 para seguir ejecutanto y..... ¡Voilà! eternamente
joven....Primera parte de la optimización terminada, tan
solo queda buscar con el editor hexadecimal la línea de
código que habíamos copiado del Softice y cambiarla por
la "post" optimización para hacer los cambios
permanentes. Más o menos queda así :
0048E936 0F 85 6D 00 00 00 C7 85 <Línea
original
0048E936 EB 71 6D 00 00 00 C7 85<Línea
parcheada
SEGUNDA PARTE:
TÉCNICAS DE MARKETING
Bueno, pues ya hemos terminado y
hemos guardado la botella del elixir en la nevera....
Pero ahora nos aparece la pantallita de marras del del
famoso centro comercial, que si bien puede hacer gracia
al principio y nos recuerda que si vamos a usar el
programa en serio es mejor compralo (disclaimer de
CRaCX), en realidad ralentiza el proceso de carga, y a
nosotros lo que nos gusta acelerar el software :-)
Para empezar, esta pantalla no
es la típica messageboxa ni una ventana normal, así que
no va ser tan fácil saber de dónde demonios sale la
condenada.... La verdad es que estuve 15 días con ella
puesta porque no tenía ni puta idea de cómo quitármela
de encima, hasta que leí el tutorial de cracking en
colores de Estado+Porcino y se me encendió la
bombilla....¡claro!... la solución era el ¡CRACKING
ENMARCADO!
Veamos, si miramos la pantalla
con detenimiento, aparte de los colores, tiene un curioso
marco rectangular en sus bordes.... mirando las funciones
que llama en el W32dasm aparece una que es
Gdi32.CreateRectRgn, (marco rectangular <> RectRgn
... pos igual...). Hacemos un bpx CreateRectRgn en el
Softice y ¡oh sorpresa! aparecemos justo en el momento
en que se crea el marco de la pantalla je..je.. si +ORC
tenía razón, el zen cracking es la solución a todo...(
Si no tienes cargado el GDI en Softice no va, hay que
cargarlo con el loader y después poner el bpx.). Caemos
en el momento en que se empieza a formar la ventana del
ReadIris, damos a F5 y vemos como se van creando los
botones, los iconos.... En cuanto se forme el icono del
escáner, STOP, F12 hasta caer en ReadIris, ya que
después de ese icono es cuando se llama a la rutina...
hacemos un F10 y más o menos caemos aquí:
:0048E8E8 E85F5FFEFF call 0047484C
:0048E8ED 83C404 add esp, 00000004
:0048E8F0 C7057013560000000000 mov dword ptr [00561370],
00000000
varios F10 y...
:0048EA3B 833DA0DC560000 cmp dword ptr [0056DCA0],
00000000
:0048EA42 0F840A000000 je 0048EA52<
No salta
:0048EA48 E87DF3FFFF call 0048DDCA<Si
se ejecuta se forman las dos Nags
:0048EA4D E905000000 jmp 0048EA57
:0048EA52 E82BF3FFFF call 0048DD82<Nunca
llega aquí. Sólo forma la de ReadIris
|:0048EA57 E90A000000 jmp 0048EA66
Despacito vamos pulsando F10 y prestando atención a
lo que ocurre en pantalla, hata que llegamos a la línea
0048EA48 y se forma la pantallita...¡ rutina cazada!,
bd*, bpx 0048EA48 y cuando salte el Softice nopeamos la
llamada, así de fácil je..je.. CTRL-D para salir del
Softice y se carga el ReadIris a velocidad supersónica,
ya que también nos hemos cargado la pantalla propia del
programa con el logo de la empresa... jua..jua..
TENEMOS BUEN CORAZÓN
Bueno..bueno.. que se supone que tenemos que hacer un
trabajo discreto... Dejaremos la pantalla de la empresa
para que no sea tan cantosa la operación.. Además,
ellos han hecho el software y se merecen que nos
acordemos de los programadores... Si nos fijamos, esa
rutina lo único que hace es que se formen las pantallas,
pero lo hacen al mismo tiempo... ¿Cómo puñetas sabe
cuál tiene que formar?...¿Qué son esos saltos
condicionales tan raros antes de la llamada?...Amigos
mios he ahí la solución. El salto condicional en
0048EA42 nos hace seguir hacia la pantalla del centro
comercial y parece ser que la rutina de 0048EA52 está
castigada a no ocurrir...Si cambiamos el je 0048EA52 por
un jne 0048EA52 se ejecuta y vemos (F8) que es exactamente
igual a la que teníamos en 0048EA48 , solo que ahora
tenemos una única nag de la empresa fabricante. Bueno,
es más discreto cambiar un je por un jne que varios nop
para anular la llamada inicial... además el aspecto
visual el programa queda como si estuviera registrado
je..je.. Resumiendo, hacemos un d 0048EA42 y apuntamos
los valores antes y después de la optimización, vamos
al editor hexadecimal y lo parcheamos. Algo así:
:0048EA42 0F 84 0A 00 00 00 E8 7D<Línea
original
0048EA42 75 0E 0A 00 00 00 E8 7D<Línea
parcheada
Con esto hemos terminado la
optimización del ReadIris... La opción de eliminar las
dos nags es totalmemte válida, pero lo más lógico es
hacer un parche que afecte sólo a la protección, por
eso yo prefiero quedarme con la nag de ReadIris, ya que
el programa queda como si lo hubiera comprado, pero al
estar destinado a uso particular daría lo mismo.
Recordar que la distribución de software crackeado es
ilegal, por lo que sólo lo podeis utilizar vosotros....
(más disclaimer).
TERCERA PARTE:
CREACIÓN DEL PARCHE CON CODEFUSION:
Lo unico que nos queda por hacer
es el parche que nos permita convertir cualquier
ejecutable de ReadIris Pro 5.1 en la versión optimizada.
Parar ello voy a recurrir a un generador de parches,
opción del vago que no quiere aprender a programar
porque no quiere, no tiene tiempo o prefiere estar
tomando el sol en vez de delante de la pantalla...
CODEFUSION es un Patcher
disponible en la red y creado por Krichmar Cobi. Hay
otros por ahí adelante, pero yo uso este a veces y va
bien....
Lo que necesitamos es el exe
normal y el parcheado, IMPORTANTE QUE EL NORMAL NO TENGA
EL NOMBRE CAMBIADO.

Patch Window Caption: Se pone lo que quieras que
aparezca en la cabecera de la ventana.
Patch Title/Program Name: Título del parche o nombre
del programa.
Information/Comments : Información y comentarios
acerca del parche.
Icon... en mi versión no van, pero le ponen el icono
que quieras al parche.
PINCHAR EN NEXT>>>>>

Pinchar en la + de arriba y seleccionar el fichero
original SIN CAMBIARLE EL NOMBRE. Da opciones de CRC,
tamaño, fecha para que elija bien el objetivo... Hacer
lo mismo en la cruz de abajo:

Seleccionar la opción File Compare y coger el archivo
crackeado, pinchar en el menú compare y listo. ( Las
otras dos opciones permiten hacer el crack On The Fly y
ahorran tiempo pero son más complicadas para el
principiante)

Como se puede apreciar da información de lo que va a
cambiar, el offset, nº de bytes y qué hay
originalmente. Pulsar Next >>>>

Da opciones de encriptado y compresión del
ejecutable. Pinchar en Make Win32 Executable y darle un
nombre y directorio para crear el parche. Dar a Finish y
ya tenemos hecho el parcheador , que quedaría una cosa
así:

PUNTO Y FINAL:
PERSONALIZANDO EL SOFTWARE
Para terminar, comentar que
podemos prescindir de elminar las nags y cambiarlas por
cualquier otro bitmap (la foto de tu novia, del perro,
logotipo...). Es tan fácil como hacerse con un editor de
recursos y cambiarlos por los que tu quieras.También
puedes cambiar el icono de los botones, del programa,
menús de contexto y todo lo que puedas imaginar.... El
mejor que he probado es el Workshop de Borland, que se
puede descargar completo desde muchos de los enlaces de
la página de WKT. No es ingeniería inversa propiamente,
pero permite hacer cosas que hacen tu software
único..je..je.. hay que ser originales.
Y POR ÚLTIMO...
La forma de realizar este parche
la he hecho con los conocimientos acumulados desde
Octubre de 1999, el original del 10/10/1999 parcheaba
bytes que no hacía falta pero funcionaba.... la forma de
conseguirlo fue más densa que la expuesta en el
tutorial, ya que aquí voy más directo al grano y no me
lío con las funciones como ocurría al principio. De
todas formas continúo aprendiendo y leyendo, así que si
sabes alguna opción mejor o encuentras otras más
directas es lógico al no llevar ni un año de
"ingeniero" :-)
A la hora de escribir este
tutorial me he encontrado en la página de WKT un crack
para el ReadIris Pro 5.1, y al comprobar los cambios que
hacen los dos patchers el de Mr Orange cambia 12 bytes,
el de este tutorial sólo 4 pero siempre en los mismos
offset, porque en el de WKT hay varios NOP a mayores (8
en total).... el caso es que ambos funcionan :-). Por
cierto, los cracks permiten aprender comparando los
listados del W32Dasm del antes y el después, aprovechad
todos los que hay por ahí y aprended de los demás y su
forma de trabajar.
|