| ESTUDIO COLECTIVO DE DESPROTECCIONES Última Actualizacion: 25/10/2001 |
Programa | ReadIris Pro v5.1 | W95 / W98 / NT
Descripción | Software de reconocimiento óptico bastante acertado :-)
Tipo | Trial de 30 dias y Nag publicitaria del Corte Inglés.
Tipo de Tutorial | [X]Original, []Adaptación, []Aplicación, []Traducción
Url | http://www.irislink.com
Protección | Nag Screen. Time Limit 30 Dias
Dificultad | 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas | SoftIce v4, W32dasm v8.93, UltraEdit-32 v6.20b, Codefusion v3.0
Objetivo | Probar el software el tiempo necesario. Adaptarlo a nuestros gustos. Aprender a utilizar patchers (Codefusion)
Cracker | CRaCX
Fecha | 10 de Octubre de 1999
INTRODUCCION
Bueno, pos este es mi primer tutorial, así que espero que sea claro y se entienda bien lo que digo. A esta optimización del software :-) le tengo mucho cariño ya que fué mi primera experiencia en ingeniería inversa, tras varios meses de lectura de muchos tutoriales (+Orc, MexeLite, Suby, WKT...) y de búsqueda de herramientas por la red.... Sé que no es la mejor forma de hacerlo, pero funciona y esto para un newbie ya es algo.... READIRIS PRO v5.1 es un software de reconocimiento óptico de caracteres (OCR) que es muy útil para escanear artículos de revistas, documentos y similares para evitar tener que escribirlos de nuevo con el procesador de texto, manteniendo el formato y las imágenes, reconociendo tablas de datos.... Su eficacia es bastante buena, y llevo utilizándolo algún tiempo sin ningún problema..... La protección que lleva es la típica de 30 días de prueba sin ningún tipo de restricciones operativas, además de un precioso gráfico que nos recuerda dónde podemos comprarlo y su precio. No hace CRC checks, no está empaquetado ni tiene nada raro, ideal para principiantes :-)
AL ATAQUE
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.
[ Entrada | Documentos Genéricos | WkT! Web Site ]
[ Todo el ECD | x Tipo de Protección | x Fecha de Publicación | x Orden Alfabético ]
(c) Whiskey Kon Tekila [WkT!] - The Original Spanish Reversers. Si necesitas contactar con nosotros , lee esto antes e infórmate de cómo puedes ayudarnos