Arrancar el Pc con el SoftIce 3.22, con el fichero WinIce.Dat debidamente configurado.
(Ver "Introducción al SoftIce" en la sección de Documentoz Genéricoz para más información)
Ejecutar el programa WinRAR, y seleccionar la opción para registrarse.
Introducir cualquier nombre en Registration (AV) Text (Ej:ECD IntroCracking)
Introducir cualquier clave en Registration Code (Ej:222333)
Pulsar Ctrl+D para ir al SoftIce.
Una de las maneras en que el programa puede leer la información que hemos tecleado, es con
GetWindowTextA o con GetDlgItemTextA (lo de la A al final es para los programas 32 bits)
Así que vamos a poner un par de BreakPoints para estas instrucciones :
BPX getwindowtexta
BPX getdlgitemtexta
Pulsamos Ctrl+D para volver al WinRAR, y le damos al botón OK.
Apareceremos en el SoftIce, y desactivamos los BreakPoints con BD *
Vamos haciendo F12 hasta llegar al código del WinRar. (Saltándonos el código del Kernel,User...)
Llegaremos a :4139A6, después de la llamada a User32!GetDlgItemTextA
El valor guardado (el nombre) está en [EBP-64], que podemos ver haciendo D ebp-64
Avanzamos con varios F10, hasta la siguiente llamada a GetDlgItemTextA.
El valor (la clave) queda en [EBP-AC] (que es lo mismo que [EBP+FFFFFF54])
Unos pocos F10 más, y veremos :
:004139E9 8D9554FFFFFF lea edx, dword ptr [ebp+FFFFFF54]
:004139EF 52 push edx ; la clave (222333)
:004139F0 8D4D9C lea ecx, dword ptr [ebp-64]
:004139F3 51 push ecx ; el nombre (ECD IntroCracking)
:004139F4 E80369FFFF call 0040A2FC ; Validar_Registro
:004139F9 83C408 add esp, 00000008
:004139FC 85C0 test eax, eax
:004139FE 752F jne 00413A2F ; Salta si OK (AX=1)
Así pues, la rutina que valida el nombre y la clave introducidas está en :40A2FC
Acaba en :40A596, y devuelve AX=1 si OK, y AX=0 si no ok.
Pero además, en la posición de memoria [00425758] también guarda ese valor.
Así que vamos a rediseñar esa rutina, para hacerla funcionar más rápido. ;-)
Lo que la rutina debe hacer es devolver un valor en AX y en [425758], todo lo demás sobra. ;-)
Y si ese valor es 1, mejor que mejor. ;-DD Por ejemplo :
:0040A2FC 33C0 xor eax,eax
:0040A2FC 40 inc eax
:0040A2FC A358574200 mov dword ptr [00425758],eax
:0040A2FC C3 ret
Si aplicamos estos cambios antes de continuar la ejecución, nos dirá que "Correct Registration".
Pero si cerramos el WinRar, y lo volvemos a abrir, nos dirá que "Evaluation Copy".
Así que hay que hacer los cambios efectivos en el fichero WinRar95.exe
Con un editor hexadecimal, vamos a la posición 98FC, y ponemos encima de lo que haya :
33C040A358574200C3
Después de salvar, ya tenemos el WinRAR "optimizado" ;-)
Si todavía no hemos hecho la opción de Registrarse con el parche, nos saldrá lo de "Evaluation Copy".
Tan sólo hacer el Registro con el nombre y clave que queramos, y yatá ;-)
También podeis probar si habeis aplicado bién el parche, seleccionando un fichero para comprimir con el WinRAR, y activar
la casilla de "Authenticity Verification".
Si os deja es que está todo Ok.
Nota : Si la rutina que valida el registro (que va de :40A2FC hasta :40A596) hiciera algo más de lo que
yo he supuesto, y por tanto no se pudiera parchear tan alegremente com he hecho, la solución entonces sería
poner ECX=1 en :40A56F
Como no acostumbro a usar el WinRar, no lo he podido comprobar al 100%. Ya me diréis....
|