Si no tienes claro el crack en DOS incluidas las instrucciones en ensamblador vas a perder el tiempo leyendo esta página, te aconsejo que comiences la casa por los cimientos. No se puede construir un tejado donde no hay algo que lo sujete. Una vez que se tienen los conocimientos necesarios para crackear en DOS, resulta muy fácil hacerlo en windows (aunque parezca una paradoja), ya que disponemos de herramientas más potentes que nos facilitan y reducen mogollón el trabajo. En cambio, es imposible crackear en windows sin conocimientos básicos de ASM. No creas que esto del crackeo es cosa de unos minutos ni que siempre se localiza lo que andamos buscando. Ten siempre una copia de seguridad de tus datos más importantes, los cuelgues son habituales y después de unos cuantos siempre se pierde algo importante por el camino.
UNA NOTA CURIOSA
Sabéis que para crackear en DOS es imprescindible estar familiarizado con las interrupciones (o tener un buen manual de consulta), bien pues olvidaros de ellas en windows. El crackeo en este entorno requiere del conocimiento de las API's (o un buen manual de consulta). Sólo cuando se rueda un programa de dos en windows es útil el tema de las interrupciones.
Cuando desensambléis el código de lo que sea en windows observaréis que siendo un entorno de 32 bits la memoria continua estando segmentada. No se a que es debido ésto, pero supongo que será en previsión a la demanda de memoria que tendrán los programas dentro de poco tiempo. De todos modos podréis comprobar que los segmentos son increiblemente grandes, Windows asigna a cada aplicación en ejecución la friolera de 4 gigabytes. Aunque no se disponga de tanta memoria, el entorno hace uso de la memoria virtual para ello, de tal modo que si rodamos 10 aplicaciones es como si tuvieramos 40 Gigas de ram.
También podréis observar que algunos registros llevan una E delante, este es el caso de
AX-BX-CX-DX-SI-DI-BP-SP-IP
que se convierten en
EAX-EBX-ECX-EDX-ESI-EDI-EBP-ESP-EIP
Los registros son los mismos solo que en lugar de ser de 16 bites son de 32 y, por supuesto, podemos utilizarlos como más nos convenga.
SOFTICE... (nuestra arma más poderosa. Alguien lo denominó 'La Bestia')
Con este programa se hacen maravillas que hace unos años eran inimaginables cuando se crackeaba en DOS. Antes, para crackear una protección no demasiado complicada, era necesario tracear el código durante días entreros, saltando mil y una instrucción anti-traceo (int 3 a punta pala, modificacion de las direcciones de retorno, etc). Ahora y con la ayuda de este poderoso programa se puede interrumpir la ejecución de cualquier cosa en el momento que nos interese. Para ello es necesario saber en qué lugar o momento hay que poner un BP (break point o punto de ruptura).
Si has llegado hasta aquí, pensaré que tienes los conocimientos necesarios para poder saltarme la explicación de algunas cosas (de lo contrario necesitaría muchisimo espacio web y mogollón de curro para poder explicarlo todo). Por este motivo centraré esta página en el uso de softice, y que mejor forma de empezar que con una correcta...
CONFIGURACION DE SOFTICE
El primer paso, después de la instalación es editar el archivo "winice.dat" y quitarle el punto y coma al menos a las siguientes lineas
EXP=c:\windows\system\kernel32.dll
EXP=c:\windows\system\user32.dll
EXP=c:\windows\system\gdi32.dll
Esto nos permitirá interceptar las llamadas de las funciones mas importantes.
En la linea PHYSMB=XX cambiar XX por el número de megabytes de memoria ram que tengais disponible.
En la línea DRAWSIZE=XXXX cambiar XXXX por el número de Kb. de memoria de video que tengais.
En esta otra INIT="X;" podréis personalizar el arranque del softice intercalando entre INIT=" y X;" lo siguiente
LINES ?;
donde "?" es el número de lineas que queremos que tenga la pantalla (60 es una buena cantidad)
CODE ON;
esto permite que a la izquierda del código podamos ver, en modo hexadecimal, los bytes que componen cada instrucción
WC ?
"?" = número de lineas que queremos que muestre el código.
WR
nos mostrara el el estado de los registros.
La linea deberia de quedar así (más o menos):
INIT="code on;lines 60;wr;wl;wc 30;X;"
Winice.dat debería quedar más o menos así
Citar
NMI=ON
SIWVIDRANGE=ON
LOWERCASE=OFF
MOUSE=ON
NOLEDS=OFF
NOPAGE=OFF
PENTIUM=ON
THREADP=ON
VERBOSE=ON
PHYSMB=128
SYM=1024
HST=256
DRAWSIZE=8192
TRA=8
INIT="CODE ON;LINES 60;WC 30;WD 20; WW 10;WATCH EAX;WATCH *EAX;WATCH EBX;WATCH *EBX;"
INIT="WATCH EDX;WATCH *EDX; X;"
F1="h;"
F2="^wr;"
F3="^src;"
F4="^rs;"
F5="^x;"
F6="^ec;"
F7="^here;"
F8="^t;"
F9="^bpx;"
F10="^p;"
F11="^G @SS:ESP;"
F12="^p ret;"
SF3="^format;"
CF8="^XT;"
CF9="TRACE OFF;"
CF10="^XP;"
CF11="SHOW B;"
CF12="TRACE B;"
AF1="^wr;"
AF2="^wd;"
AF3="^wc;"
AF4="^ww;"
AF5="CLS;"
AF8="^XT R;"
AF11="^dd dataaddr->0;"
AF12="^dd dataaddr->4;"
CF1="altscr off; lines 60; wc 32; wd 8;"
CF2="^wr;^wd;^wc;"
EXP=c:\windows\system\kernel32.dll
EXP=c:\windows\system\user32.dll
EXP=c:\windows\system\gdi32.dll
EXP=c:\windows\system\comdlg32.dll
EXP=c:\windows\system\shell32.dll
EXP=c:\windows\system\advapi32.dll
EXP=c:\windows\system\msvbm50.dll
WDMEXPORTS=OFF
MONITOR=0
; WINICE.DAT
; (SIW95\WINICE.DAT)
; for use with SoftICE Version 3.2 (Windows 95)
; 14 July 1997
; *************************************************************************
; If your have MORE than 32MB of physical memory installed, change
; the PHYSMB line to the correct # of Megabytes.
; If you have LESS than 32MB you can save a bit of memory by
; specifying the correct # of Megabytes
; Example: PHYSMB=32
; *************************************************************************
; ***** Examples of sym files that can be included if you have the SDK *****
; Change the path to the appropriate drive and directory
;LOAD=c:\windows\system\user.exe
;LOAD=c:\windows\system\gdi.exe
;LOAD=c:\windows\system\krnl386.exe
;LOAD=c:\windows\system\mmsystem.dll
;LOAD=c:\windows\system\win386.exe
; ***** Examples of export symbols that can be included *****
; Change the path to the appropriate drive and directory
;EXP=c:\windows\system\vga.drv
;EXP=c:\windows\system\vga.3gr
;EXP=c:\windows\system\sound.drv
;EXP=c:\windows\system\mouse.drv
;EXP=c:\windows\system\netware.drv
;EXP=c:\windows\system\system.drv
;EXP=c:\windows\system\keyboard.drv
;EXP=c:\windows\system\toolhelp.dll
;EXP=c:\windows\system\shell.dll
;EXP=c:\windows\system\commdlg.dll
;EXP=c:\windows\system\olesvr.dll
;EXP=c:\windows\system\olecli.dll
;EXP=c:\windows\system\mmsystem.dll
;EXP=c:\windows\system\winoldap.mod
;EXP=c:\windows\progman.exe
;EXP=c:\windows\drwatson.exe
; ***** Examples of export symbols that can be included for Windows 95 *****
; Change the path to the appropriate drive and directory
;EXP=c:\windows\system\shell232.dll
;EXP=c:\windows\system\comctl32.dll
;EXP=c:\windows\system\crtdll.dll
;EXP=c:\windows\system\version.dll
;EXP=c:\windows\system\netlib32.dll
;EXP=c:\windows\system\msshrui.dll
;EXP=c:\windows\system\msnet32.dll
;EXP=c:\windows\system\mspwl32.dll
;EXP=c:\windows\system\mpr.dll
SIWVIDRANGE=ON
LOWERCASE=OFF
MOUSE=ON
NOLEDS=OFF
NOPAGE=OFF
PENTIUM=ON
THREADP=ON
VERBOSE=ON
PHYSMB=128
SYM=1024
HST=256
DRAWSIZE=8192
TRA=8
INIT="CODE ON;LINES 60;WC 30;WD 20; WW 10;WATCH EAX;WATCH *EAX;WATCH EBX;WATCH *EBX;"
INIT="WATCH EDX;WATCH *EDX; X;"
F1="h;"
F2="^wr;"
F3="^src;"
F4="^rs;"
F5="^x;"
F6="^ec;"
F7="^here;"
F8="^t;"
F9="^bpx;"
F10="^p;"
F11="^G @SS:ESP;"
F12="^p ret;"
SF3="^format;"
CF8="^XT;"
CF9="TRACE OFF;"
CF10="^XP;"
CF11="SHOW B;"
CF12="TRACE B;"
AF1="^wr;"
AF2="^wd;"
AF3="^wc;"
AF4="^ww;"
AF5="CLS;"
AF8="^XT R;"
AF11="^dd dataaddr->0;"
AF12="^dd dataaddr->4;"
CF1="altscr off; lines 60; wc 32; wd 8;"
CF2="^wr;^wd;^wc;"
EXP=c:\windows\system\kernel32.dll
EXP=c:\windows\system\user32.dll
EXP=c:\windows\system\gdi32.dll
EXP=c:\windows\system\comdlg32.dll
EXP=c:\windows\system\shell32.dll
EXP=c:\windows\system\advapi32.dll
EXP=c:\windows\system\msvbm50.dll
WDMEXPORTS=OFF
MONITOR=0
; WINICE.DAT
; (SIW95\WINICE.DAT)
; for use with SoftICE Version 3.2 (Windows 95)
; 14 July 1997
; *************************************************************************
; If your have MORE than 32MB of physical memory installed, change
; the PHYSMB line to the correct # of Megabytes.
; If you have LESS than 32MB you can save a bit of memory by
; specifying the correct # of Megabytes
; Example: PHYSMB=32
; *************************************************************************
; ***** Examples of sym files that can be included if you have the SDK *****
; Change the path to the appropriate drive and directory
;LOAD=c:\windows\system\user.exe
;LOAD=c:\windows\system\gdi.exe
;LOAD=c:\windows\system\krnl386.exe
;LOAD=c:\windows\system\mmsystem.dll
;LOAD=c:\windows\system\win386.exe
; ***** Examples of export symbols that can be included *****
; Change the path to the appropriate drive and directory
;EXP=c:\windows\system\vga.drv
;EXP=c:\windows\system\vga.3gr
;EXP=c:\windows\system\sound.drv
;EXP=c:\windows\system\mouse.drv
;EXP=c:\windows\system\netware.drv
;EXP=c:\windows\system\system.drv
;EXP=c:\windows\system\keyboard.drv
;EXP=c:\windows\system\toolhelp.dll
;EXP=c:\windows\system\shell.dll
;EXP=c:\windows\system\commdlg.dll
;EXP=c:\windows\system\olesvr.dll
;EXP=c:\windows\system\olecli.dll
;EXP=c:\windows\system\mmsystem.dll
;EXP=c:\windows\system\winoldap.mod
;EXP=c:\windows\progman.exe
;EXP=c:\windows\drwatson.exe
; ***** Examples of export symbols that can be included for Windows 95 *****
; Change the path to the appropriate drive and directory
;EXP=c:\windows\system\shell232.dll
;EXP=c:\windows\system\comctl32.dll
;EXP=c:\windows\system\crtdll.dll
;EXP=c:\windows\system\version.dll
;EXP=c:\windows\system\netlib32.dll
;EXP=c:\windows\system\msshrui.dll
;EXP=c:\windows\system\msnet32.dll
;EXP=c:\windows\system\mspwl32.dll
;EXP=c:\windows\system\mpr.dll
Con esta pequeña modificación ya estamos preparados para utilizarlo. Resetea el ordenador para que la nueva configuración tenga efecto.
Si ya lo tenemos instalado, el siguiente paso es probarlo, así que Ctrl+D para entrar y F5 para salir... que... ¿funciona?... bien ahora vamos a aprender a utilizarlo.