--

ESTUDIO COLECTIVO DE DESPROTECCIONES
WKT Tutorialz Site
WKT
progrAmA SemPoint 2.25 W95
DEsCripCión Lector para BBS y FidoNet
tipo Shareware (33 $)
protECCión Nag Screen, y alguna opción desactivada.
DiFiCultAD 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
hErrAmiEntAs SoftIce 3.22, Editor Hexadecimal (UltraEdit32)
CrACkEr Mr.Brown
FEChA 13 de Agosto de 1998
ComEntArio Crack con dedicatoria especial para @llapi. ;-)
EMSDA - El Movimiento Se Demuestra Andando.

Introducción
Las limitaciones de la versión no registrada son :
Al iniciarse el programa, se muestra la típica (y molesta) ventana de shareware, que no puede cerrarse hasta pasados 5 segundos.
Además hay una opción (TearLine) que no aparece si no estas registrado.

Para registrarse, hay que introducir el nombre, un nº de serie, y un código de registro.

Al Atake
Las primeras pruebas que hice fueron en torno al BPX GetWindowText para la pantalla de Registro, e intentar seguir qué hacía con los valores introducidos.
Como la cosa se liaba demasiado, cambio de táctica...

Con el FileMon y el RegMon activados y filtrando para Sem*, volví a ejecutar el Sempoint, para ver a qué ficheros y valores del registro de windows accedía.
Del registro nada, pero de los ficheros había uno que intentaba abrir y no encontraba, y con nombre sospechoso (Scripta.Reg).

Así que de vuelta al SoftIce, previa consulta de cual es la llamada de la interrupción 21 a Abrir Fichero.
Para interceptarla : BPINT 21 IF AH==3D

Arranco el Sempoint, y el BreakPoint hace efecto, apareciendo en el SoftIce, en el momento de abrir un fichero. Con D DS:DX ,se puede ver el nombre del fichero que se va a abrir.
El que interesa es el fichero Scripta.Reg, al cual se accede después de 4 veces F5, con el breakpoint activado.

Ok, ahora con 3 veces F12 nos situamos en la posición CS:02DB or al,al
La línea siguiente (CS:02DD) es un salto condicional (JZ 0330)
Si lo capamos (Nop,Nop), el Sempoint se pensará que estamos registrados, activará el menú de TearLine, desactivará el menú de Registro, y empezará el programa inmediatamente sin mostrar ninguna pantallita de shareware. ;-)

Él programa ya está crackeado, aunque si vamos al menú de About, aún nos dice que unregistered user. No tiene importancia, pero si se prefiere que no lo ponga, se puede cambiar :
Ejecutar el Sempoint, y después de abierto, poner (o reactivar) el breakpoint para la apertura de fichero (BPINT 21 IF AH==3D), e ir al menú de About.

Otra vez hace efecto el breakpoint. Con D DS:DX ,comprobamos que efectivamente se intenta abrir el fichero Scripta.Reg
Ok, ahora con 3 veces F12 nos situamos en la posición CS:007E or al,al
La línea siguiente (CS:0080) es un salto condicional (JZ 00F6)
Si también lo capamos (Nop,Nop), ya no nos saldrá lo de unregistered user. ;-)


Como parece que con los 4 Nops ya hay bastante, se trata ahora de localizar esos bytes en el fichero SemPoint.Exe.
Hay que ir con cuidado qué bytes se buscan, ya que los que tienen que ver con el segmento son variables, y no se encontraran igual en el exe.
Por ejemplo, la llamada anterior a CS:02B en mi caso era call 304f:06ab (9A AB 06 4F 30)
Pues bién, si se buscan esos bytes en el exe no se encontrarán.
Habría que buscar (9A AB 06), o sea sin tener en cuenta la parte del segmento.

De todas maneras, en este programa ha sido fácil localizar los bytes, simplemente haciendo una búsqueda de :
08 C0 74 51 (or al,al ; jz 0330 ; para el primer parche)
08 C0 74 74 (or al,al ; jz 00f6 ; para el segundo parche)
Como sólo había una ocurrencia para cada uno, no había duda... ;-)

Para aplicar el parche en el fichero exe definitivamente, con un editor hexadecimal cambiar :
en el offset 42DD ,en lugar de 74 51 poner 90 90
en el offset E280 ,en lugar de 74 74 poner 90 90