| ESTUDIO COLECTIVO DE DESPROTECCIONES Última Actualizacion: 25/10/2001 |
Programa | Macromedia Flash 4 | W95 / W98 / NT
Descripción | Programa multimedia
Tipo | Trial de 30 dias
Tipo de Tutorial | [X]Original, []Adaptación, []Aplicación, []Traducción
Url | http://www.macromedia.com
Protección | Sales Agent 3.1.2.
Dificultad | 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas | SoftIce v3.23 + IceDump 4, Procdump 32, PE Splitter de R!sc (o similar)
Objetivo | Inutilizar Sales Agent
Cracker | Gádix
Fecha | 7 de Marzo de 2000
INTRODUCCION
BIENVENIDOS AL CIRCO DE LAS "GRANDES COMPAÑÍAS" Sí, habéis oído bien. Al circo es donde deberían ir a hacer el ridículo compañías como ReleaseNow (Sales Agent) y Macromedia. Veremos la inutilidad (si no se toman las medidas adecuadas) de encriptar el ejecutable principal y meter en otro la protección.
AL ATAQUE
Instalamos el programa (recomiendo instalarlo con MagicEye, Removit o similar, pues la instalación nos esconderá algún fichero, que el desinstalador de Windows no eliminará). Vamos al directorio donde lo hemos instalado. Ejecutamos el único ejecutable que hay, que es Flash.exe (Umm!!, que raro sólo ocupa unos 200Kb). Nos sale una pantalla que nos dice que si queremos comprar ahora el producto, probarlo o salir. Pues vamos a probarlo. Ui, que majo..... Bueno, sin cerrar Flash, abrimos ProcDump32 y miramos las tareas que hay abiertas en este momento. Justo debajo de Flash.exe vemos otra tarea: Flash.tty. Si miramos en el explorador vemos que "flash.tty", ya tiene un tamaño un poco más normal (4 Mb). Lo editamos y vemos que empieza por la cadena "MZ". Esto tiene toda la pinta de ejecutable. Lo copiamos con otro nombre. Por ejemplo, "algo.exe". Lo ejecutamos y Windows pega uno de sus habituales "petardones". Esto pasa porque está encriptado. Pensemos. Cuando ejecutamos flash.exe y le damos a probar el producto, este debe desencriptar flash.tty en la memoria. La pregunta es: ¿está todo el ejecutable encriptado o por el contrario sólo está encriptada alguna sección? Que esté todo el ejecutable lo descartamos, porque al menos la cabecera del ejecutable está intacta (¿recordáis la cadena "MZ"?). Ahora queda saber cuáles son las secciones encriptadas. Para ello abrimos "flash.tty" con ProcDump y le damos a Sections: De paso nos apuntamos el Entry Point (el punto de entrada) que es: 0014D930 + Image Base= 0014D930 + 00400000 = 0054D930 Ahora viene lo realmente importante. Hay que poner un breakpoint de acceso a memoria (BPM) en cualquier punto de todas las secciones. Lo más fácil es ponerlo al principio de cada sección. Haremos el ejemplo de la sección ".text": Una vez dentro del proceso (flash.tty) y ponemos en la línea de comandos del Sice: bpm 401000 W bpx 0054D930 Vamos a ver un poquito el porqué de estos breakpoints: Bpm es un tipo especial de breakpoint para accesos a memoria. 401000 = Virtual Offset de la sección ".text" + Image Base (400000) (recordad que la suma es en hexadecimal) W (w rite)- nos interesa que nos avise el Sice sólo cuando se escriba en esa dirección de memoria. BPX 0054D930 - Nos interesa saber cuándo empieza a ejecutarse "Flash.tty", puesto que hay secciones como ".data" que cambian en tiempo de ejecución. Ponemos los breakpoints (BPM) correspondientes a cada sección y...vemos que sólo la sección ".text" cae en la trampa para osos (recordad, ANTES del Entry Point de "Flash.tty"). Tenemos dos opciones: volcar la sección con ProcDump o con el Sice parcheado con IceDump. Os explicaré las dos formas: MÉTODO 1: Usando PROCDUMP (pa los que no tengan PE Splitter o IceDump) Ejecutamos flash.exe (el de 200 Kb, se supone que todavía no estamos registrados), le damos a probar el producto. Abrimos ProcDump y en la lista de tareas sobre "flash.tty" le damos al botón derecho del ratón y seleccionamos "Process Infos". Ahora le damos a "Sections" y sobre ".text" le damos a "Save section to disk" y le llamamos, por ejemplo, "text.bin". Copia "flash.tty" a "algo.exe". En ProcDump le damos a "PE Editor" y seleccionamos "algo.exe". De nuevo le damos a "Sections". Sobre ".text" pulsamos en "Load section from disk". Escogemos "text.bin". Le damos a OK. Ahora (IMPORTANTE!) en "Apply changes method", pulsamos en "To PE file". OK otra vez y voilá, ya tenemos Flash 4 de por vida. MÉTODO 2: Usando IceDump Primeramente usamos PE Splitter (o cualquier programa que nos divida los ficheros en secciones) con "flash.tty". Abrimos ProcDump y la damos a "PE Editor". Seleccionamos "flash.tty". Nos apuntamos el valor de "Image Base" (400000). Le damos a "Sections". Nos apuntamos el valor de "Virtual Offset" (1000) y de "Raw Size" (271200), ambos de la sección ".text". Primero voy a explicar cómo funciona el comando PAGEIN modificado: PAGEIN 1 2 3 1 = Virtual Offset de ".text" + Image Base (400000) 2 = Raw size de ".text" 3 = un nombre de fichero cualquiera Arrancamos "flash.exe". Ahora nos tenemos que meter dentro del código de Flash (flash.tty). Para ello (hay muchas más formas de hacerlo) ponemos un breakpoint en CreateWindowExA, le damos al menú de Help, About Flash y nuestro todopoderoso SoftIce salta. Dos veces a F12 y ya estamos dentro de Flash. Ahora ponemos: PAGEIN 401000 271200 c:\text.bin Ya tenemos la sección ".text" desencriptada. Si todavía no habías usado PE Splitter con "flash.tty", hazlo ahora. Para obtener el ejecutable totalmente funcional, ponemos: copy /b a.r!sc.bin + text.bin + c.r!sc.bin + d.r!sc.bin + e.r!sc.bin + f.r!sc.bin + g.r!sc.bin gadix.exe De nuevo, tenemos Flash 4 de por vida. CUESTIONES ESTÉTICAS El programa ya no caduca, pero en el menú About no aparece nuestro nombre como registrados. Lo que sí sale es "Serial Number: FLW400-67963-17145-20486". Si trazamos con RegMon vemos que este número lo lee de HKEY_LOCAL_MACHINE\Software\Macromedia\Flash\4\Registration\Serial Number. Vamos a borrar esta clave, a ver que sucede (expórtala primero, para mayor seguridad). Nos sale una ventana pidiendo nuestro nombre, organización y un número de serie. Esta parte de la protección no es del Sales Agent, sino de la propia Macromedia. No nos vamos a complicar la vida. Metemos un nombre y organización cualquiera y como serial el que habíamos borrado antes del registro. Perfecto, nos acepta el serial. Pero, ¿porqué nos da Macromedia un serial válido? Pues para poder entrar durante los 30 días de evaluación. Una vez nos registramos con Sales Agent, éste nos borra el serial. Pero al no habernos registrado, el nº de serie válido permanece en el registro. Fijaos hasta que punto llega la inteligencia de los programadores de Macromedia. Para curiosos: Aunque el tiempo de evaluación haya expirado, poned un breakpoint en DialogBoxParamA. Arrancad el programa. Cuando salte el breakpoint, pulsad F12. Ahora pulsar en "Cancel". Volveréis al Sice. Poned a uno el valor de EAX (r eax 1). Pulsad F5,y.....Flash se ejecuta normalmente!!! Una prueba más de la desastrosidad del Sales Agent. Al tratarse de una protección genérica, posiblemente (no he tenido la ocasión de probar más programas con esta protección), con desencriptar la sección ".text", quedarán en nuestras manos un montón de programas más. Una protección más echada al traste... Este tute se lo dedico especialmente a Estado+Porcino y a todos los colores de [WkT!] y en general a todos los comparten sus conocimientos en Ingeniería Inversa. Erratas, dudas y demás en: gadix@ctv.es
[ 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