| ESTUDIO COLECTIVO DE DESPROTECCIONES Última Actualizacion: 25/10/2001 |
Programa | Ulead Video Studio v3.0 | W95 / W98 / NT
Descripción | Edición de vídeo
Tipo | Trial de 15 días con algunas otras limitaciones
Tipo de Tutorial | [X]Original, []Adaptación, []Aplicación, []Traducción
Url | http://www.ulead.com
Protección | Nag Screen, Time Limit 15 Días y otras limitaciones
Dificultad | 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas | SoftIce v3.25
Objetivo | Que el programa funcione sin restricciones
Cracker | Mr.Orange [WkT!]
Grupo | Whiskey Kon Tekila
Fecha | 14 de Septiembre de 1999
INTRODUCCION
Vídeo Studio 3.0 es una aplicación que permite editar clips de vídeo en formatos AVI y MPEG. La aplicación te permite también capturar vídeo mediante una cámara digital o una tarjeta capturadora de vídeo. Es una versión tryout que tiene las siguientes limitaciones: Solamente funciona durante 15 días. Limita la duración de los videos a 30 segundos. Solo se permite 35 transacciones por vídeo.
AL ATAQUE
Empecemos pues... Ejecutemos a nuestro amigo y probemos el programa. He creado un vídeo muy chulo, pero ocupa más de 30 segundos y cuando lo intento guardar en formato AVI me dice que no quiere. Esto no quedara quedara así, mira que plantarme cara!! :)) La ventana que aparece tiene toda la pinta de ser un MessageBox, por lo que ponemos el cebo en las funciones MessageBoxA y MessageBoxExA a ver si pica. VAYA!!!! No ha picado Entonces probaremos a poner un breakpoint cuando se destruya la ventana. Para ello ejecutamos el comando bmsg 020C wm_destroy, recuerda que 020c es el handle de la ventana y seguramente tu no tendrás el mismo, por lo que tendrás que averiguarlo (se puede averiguar con el comando hwnd). Probamos nuestro nuevo cebo y.... BINGO, el SoftICE ha despertado, jejee Después de unos cuantos F12 aparecemos aquí: 0044678A mov ecx, eax 0044678C call ds:??PCuTime@@QBEHV0@@Z ; CuTime::operator>=(CuTime) 00446792 test eax, eax <-- Que interesante. 00446794 jz 004467AA 00446796 push ebx 00446797 push 8291h 0044679C push ebx 0044679D call 004149C0 004467A2 add esp, 0Ch <-- Tu vuelves aqui. 004467A5 jmp 00447033 004467AA mov eax, 004B2310 Bien, aquí tenemos algo interesante. :)) En la línea 0044678C se llama a la función PCuTime@@QBEHV0@@Z, que según parece sirve para calcular si un vídeo dura mas o igual que otro. Pero lo que a nosotros nos interesa es la línea 00446794, donde salta o no (tenemos que hacer que salte para quitar esta limitación, por lo que tenemos varias opciones: Cambiar el jz por un jmp Cambiar el test eax, eax por un xor eax, eax Si optamos por la primera, cuando saltemos eax valdrá 1 y si cogemos la segunda eax valdrá 0. yo me he decidido por la segunda, ya que en este caso eax=0 que es lo que debería de devolver al call anterior si el vídeo tuviera menos de 30 segundos. Es posible que esto no influya en nada, pero quizás el autor utilice el valor de eax para algo y se estropee nuestro vídeo, así que por si las moscas....
Siguiente objetivo.
Bien, ahora ya podemos hacer producciones más largas, pero todavía tenemos mas problemas. El programa caduca a los 15 días (o no te acordabas). Veamos como se comporta pasado este tiempo. Adelantemos el reloj 2 meses (mas vale que sobre, no??) y ejecutemos el programa. Vaya, aparece una ventana muy fea diciendo que ha caducado: Vamos a actuar igual que antes: poniendo un breakpoint cuando se cierre la ventana (recuerda que es el evento wm_destroy). Y tras un par de F12 llegamos aquí: 0041A35C push ecx 0041A35D push eax 0041A35E call j_ulcCheckLegality 0041A363 test eax, eax <-- Tu vuelves aqui. 0041A365 jz short loc_41A3A0 0041A367 cmp [esp+1E8h+var_70], 515h 0041A372 jnz short loc_41A382 0041A374 push offset aTrial 0041A379 lea ecx, [esp+1ECh+var_1DC] Bien, según parece hemos regresado un una función llamada CheckLegality. que es la que comprueba el tiempo transcurrido (porque el programador no aprende y por lo menos esconde lo que hace la función con otro nombre menos significativo??). Veamos que es lo que hace esta función (se encuentra en el la DLL u32cfg.dll): ; S u b r o u t i n e ; Attributes: bp-based frame public ulcCheckLegality ulcCheckLegality proc near arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch 4EB05E40 push ebp 4EB05E41 mov ebp, esp 4EB05E43 push 0 4EB05E45 push 1 4EB05E47 mov eax, [ebp+arg_4] 4EB05E4A push eax 4EB05E4B mov ecx, [ebp+arg_0] 4EB05E4E push ecx 4EB05E4F call GetModuleInfo 4EB05E54 add esp, 10h 4EB05E57 neg eax 4EB05E59 sbb eax, eax 4EB05E5B neg eax 4EB05E5D pop ebp 4EB05E5E retn 8 ulcCheckLegality endp Si jugamos un poco con esta función, nos damos cuenta que el call de la línea 4EB05E4F es el que muestra la ventana y devuelve en eax 0 (si nos fijamos un poco nos daremos cuenta que debería de devolver 1 para que todo fuera como deseamos). Así que retocamos la función con los siguientes cambios: La línea 4EB05E4F la sustituimos por nops (tantos como sea necesario). Así quitamos la ventana tan fea. Necesitamos que se devuelva 1 en eax, por lo que sustituimos las líneas 4EB05E57 a 4EB05E5B por un mov eax, 1 y tantos nops como sea necesario. Con esto conseguimos engañar al programa. :))
Una ultima palabra.
Ha sido fácil, no? Con estos cambios el programa ya no caduca y podemos hacer los videos tan largos como queramos. Pero me he dado cuenta que con solo el ultimo cambio, el programa no se queja de que los videos superan los 30 segundos, y tampoco me ha puesto ninguna pega al poner mas de 35 transacciones, por lo que supongo que con solo parchear la función ulcCheckLegality el programa funcionará correctamente.
[ 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