jrudiman's tutorial #08 |
Programa: | SmackPlay 3.1 for Windows |
Descripción: | Reproductor de animaciones .SMK |
URL: | RAD |
Tipo de protección: | Nag-screen. |
Bug: | Aparece un mensaje al finalizar la reproducción. |
Objetivo: | Evitar que aparezca el nag-screen. |
Herramientas: | W32Dasm 8.93, Hiew 6.10 |
Fecha: | Junio de 1999 |
Introducción |
Aquí tenemos otro programa que, una vez finalizada la reproducción, te muestra un bonito NAG-screen diciendo que SmackPlay is part of the Smacker.... Utilizaremos el método de siempre, pero esta vez variaremos la forma de parchear el salto condicional. |
Al ataque! |
Desensamblamos el SMKPLW.EXE con el W32Dasm. Vammos a StrRef (String References) y buscamos el famoso mensaje. Hacemos doble click y veremos el siguiente código: ...bla...bla...bla... :004064D4 TEST AL,AL :004064D6 JE 004064ED :004064D8 PUSH 00... :004064DA PUSH 00... :004064DC PUSH 00... *Possible String Data Ref. from Data Obj. 001 -> "SmackPlay is part of the Smacker..." :004064DE PUSH 00415F34 //estás aquí *Possible String Data Ref. from Data Obj. -> "SmackPlay-V3.1r" //título de la ventana :004064E8 PUSH 0041613C :004064EA CALL 004046F0 *Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004064D6 (C) :004064ED POP EBP :004064ED POP EDI :004064ED POP ESI ...bla...bla...bla... Observamos el hecho de que aparezca el cuádro de diálogo o no solo depende del JE. Si no salta, aparece y si salta no. Lo más fácil ahora sería cambiar el JE por un JMP. Pero no, veremos otro método igual de eficaz y más rebuscado. Vemos que justo antes del JE hay un TEST AL,AL (84C0). Esta instrucción pone el flag de zero (ZF a 0, haciendo que el JE (o JZ) no salte. En cambio, si hubiera un OR AL,01 (0C01) forzaría el salto, al poner el ZF a 1. Miramos el Offset de TEST (64D4h) y con el HIEW cambiamos el 84C0 por 0C01. |
EOF |
Bien, de esta forma evitamos que aparezca el mensaje después de reproducir la animación. |