TORN@DO presents: cRACKER's n0TES

Tips & Trucos para crackear Serials



Eco de memoria (Cruehead)
Una manera com�n de encontrar un n�mero de serie v�lido es encontrar lo que el legendario +ORC llama eco de memoria ("memory echo"). Este es el lugar donde nuestro numero de serie introducido es comparado al numero de serie real, v�lido (a menudo calculado desde nuestro nombre de usuario introducido). Puedes crackear muchos programas, simplemente encontrando el eco de memoria, as� se desconfiado cuando veas un c�digo as�:

mov bl,[esi] 	; Toma un byte del numero de serie correcto 
mov bh,[edi] 	; Toma un byte del numero de serie introducido 
cmp bl,bh 	; Comp�ralos 
jne... 	        ; Si no emparejan, entonces el numero introducido es incorrecto.


As� que, para encontrar el eco de memoria aqu�, habr�a que escribir, en SoftICE, "d esi", y entonces ver�as el numero de serie correcto en tu ventana de datos. Otro recorte de c�digo que hace la misma cosa podr�a parecerse a:

mov ecx,longdelserialv�lido  ; cu�ntos bytes a comparar 
repz cmpsw 		; Cmp string al ds:esi (ser. correcto) con es:edi (nuestro ser.) 
je ...  		; Salta a la etiqueta "serial v�lido" si los strings emparejan. 

Para encontrar el eco de memoria para un programa que usa un c�digo as�, habr�a, que escribir , en SoftICE "d esi." �Simplemente como en el ejemplo anterior! �Bien, ahora espero que entiendas un poco m�s sobre lo que es el eco de memoria, y c�mo encontrarlo!

Romper mensajes (+Greythorne)


BMSG <Manipulador de Ventana> WM_GETTEXT (bueno para las passwords)
BMSG <Manipulador de Ventana> WM_COMMAND (bueno para los botones de OK)

Informaci�n importante: Imagina que est�s usando WM_COMMAND para intentar localizar el Bot�n, y el hwnd resultante y ves que el hwnd del bot�n es p.ej. 0324 y que el hwnd de la ventana es p.ej. 0129
Para encontrar el Bot�n, usa el Valor de la Ventana, no el Valor del Bot�n para BMSG (el otro simplemente no trabajar�) as� para el ejemplo, para encontrar nuestro bot�n nosotros tendr�amos BMSG 0129 WM_COMMAND

Crackeando N�meros de serie (josephCo)


Bien empezar� explicando un peque�o truco que uso para atacar serials. Yo no uso ninguna de las principales APIs (GetDlgItemtext(A), GetWindowText... [si es que realmente hay uno para usar]), yo casi siempre rompo en HMEMCPY.

Cuando pongo mi breakpoint en HMEMCPY, yo solo "paseo" (F10) dentro de �l aproximadamente de 17 a 25 l�neas. Debes encontrar un c�digo similar a esto:
PUSH ECX 
SHR ECX,2 	; el n�mero de palabras a copiar 
REPZ MOVSD	; las copia desde DS:ESI (32-Bit) a ES:DI (32-Bit) 
POP ECX 
AND ECX,3 
REPZ MOVSB      ; lo mismo que REPZ MOVSD, pero s�lo 1 Byte 
XOR DX 
XOR AX 

Ahora, esto puede parecer un poco complicado, pero simplemente pega con �l. Encontrar�s que este m�todo normalmente es un poco m�s f�cil para romper en tu numero de serie, o nombre.

En REPZ MOVSD, en sice, teclea: D DS:ESI (32 bit) o D DS:SI (16 bit). Debes ver tu nombre, n�mero de serie, o cualquier cosa que escribiste en el. Ahora teclea: D ES:EDI (32 bit) o D ES:DI (16 bit). Esto mostrar� la situaci�n donde t� informaci�n se copiar� para p.je. 22BF:00000000. Date cuenta del extra�o segmento (22BF). Si t� BPR en este rango de memoria, no podr�s romper de nuevo en absoluto. Ahora F10 hasta que toda tu informaci�n sea copiada (past repz movsb). En este punto debes teclear: PAGE 22BF:00000000 (o cualquier SEG:OFFSET que tengas). Algo as� se presentar�:

Linear Physical Attributes Type
80284960 01603960 PD A AU RW System


Lo que nosotros queremos es poner un BPR (break point en rango) a la direcci�n de la situaci�n lineal. Para hacer esto necesitas saber cu�ntos bytes est�n en el rango, y tienes que usar el SELECTOR 30

Ejemplo: BPR 30:80284960 30:80284969 RW

Esto s�lo pone un break en el rango para 9 bytes durante el acceso RW (lectura/escritura). Si quieres ver c�mo direcciones diferentes realmente pueden ser las mismas puedes:

D 30:80284960

Siempre usa el selector 30, porque siempre existe. Estos son simplemente los hechos.

B�sicamente todo esto es impide al usuario hacer F12 fuera del API normal y entonces buscar para su serial/name. Esto es sumamente �til para programas de 16 bit, porque el segmento siempre cambia. Ahora puedes hacer alegremente (F5) y repetir el proceso o BD <HMEMCPY> ( es cualquier breakpoint) y debes romper cuando tu serial/name es le�do. Simple ;)

Crackeando N�meros de Serie usando HMEMCPY (CrackZ)


Una funci�n de Windows interesante crackeando n�meros de serie es HMEMCPY. Es llamado cuando strings (p.ej.n�meros de serie ) son copiados en la memoria. Para usar HMEMCPY, primero tienes que entrar algunos detalles en el di�logo de registro y entonces despu�s de que has a�adido toda la informaci�n, agrega un breakpoint a HMEMCPY (Ctrl-D, BPX HMEMCPY). Vuelve al programa (Ctrl-D) y aprieta el bot�n OK/Register, etc.. Sales temporalmente a SoftICE, as� que pega F11 para volver a la funci�n llamada. Si hay m�s cajas de edici�n, aprieta Ctrl+D y F11 de nuevo, hasta que est�s seguro, de que toda la informaci�n de las cajas de edici�n ha sido copiada. Ahora est�s mirando a algo as�:

PUSH DWORD PTR [DI]
CALL KERNEL!LOCALUNLOCK

Este c�digo est� en USER, y la mayor�a de los c�digos son verificados desde el archivo ejecutable del programa (p.ej. FILE.EXE), as� que avanza con F10 despu�s de que has desactivado todo los breakpoints. Debes caminar a trav�s de muchas instrucciones (quiz� 50 o m�s), y probablemente pasar�s por Kernel32!_freqasm antes de que vuelvas al c�digo del programa. Si volvieras al c�digo del programa, comienza avanzando despacio con F10 a trav�s de �l. Si encuentras algo interesante - quiz� dos numero de serie se Empujan en la pila y entonces una LLAMADA es ejecutado... usa D para ver esta situaci�n de memoria.

Si ves montones de Llamadas de funci�n y saltos condicionales, podr�as no querer perder tiempo verificando esto. As� que usemos la informaci�n que conseguiste cuando entraste un numero de serie incorrecto. En este caso deja SoftICE y abre W32DASM. Ahora busca el mensaje que conseguiste, cuando entraste un numero de serie incorrecto, en string reference. As� ves donde aparece el mensaje de numero de serie err�neo. Debes apuntar esta direcci�n. Entonces busca el mensaje que conseguir�as cuando entrases un numero de serie correcto y anota la direcci�n. As� que ahora sigamos usando SoftICE y comencemos intentando conseguir registrar el programa. Atr�s en SoftICE empieza caminando a trav�s del c�digo y comprueba si un salto condicional esta cerca del mensaje de tu numero de serie incorrecto y tambi�n comprueba si salta al mensaje de numero de serie v�lido. Ahora esto debe bastarte para conseguir un numero de serie v�lido o encontrar d�nde remendar el archivo.

Crackeando N�meros de serie en Visual Basic (CrackZ)


Voy a resaltar otra manera en la que puedes invertir protecciones de n�meros-de-serie en VB, este acercamiento implicar� usar la caja de mensaje que aparece cuando entras un c�digo incorrecto. As� que antes de apretar O.K. pon un BPX rtcMsgBox en SoftICE, necesitar�s tener MSVBVM50.DLL cargado para hacer esto. Entonces entra tu datos de registro favoritos y aprieta enter. SoftICE romper� en la funci�n rtcMsgBox. As� que desensambla tu programa. Ve al segmento del c�digo donde la caja del mensaje aparece. Debes ver f�cilmente que nuestra caja del mensaje es referida por un control espec�fico. Pon un breakpoint justo antes de esa funci�n de comparaci�n, nota que las funciones de Visual Basic no difieren en cualquier caso del API WIN32 en eso tambi�n ellos deben EMPUJAR cualquier par�metro que ellos usen hacia la pila. As� que debes alcanzar este c�digo f�cilmente (justo antes de nuestra comparaci�n cr�tica), podr�as necesitar empujar F5 & F11 unas veces. Ahora debes poder coger el c�digo bueno.

La pr�xima vez cuando est�s invirtiendo un objetivo de Visual Basic, podr�a valer la pena intentar con las funciones siguientes:

__vbaLenBstr (consigue longitud de string)
__vbaStrCopy
__vbaStrMove

Crackeando N�meros de serie en Visual Basic 3 (+wAj)


Lo explicado pueden usarse para cualquier recorte si lo tienes delante de ti como el de debajo:
; Recortes_de_comparaci�n_VB3 
: 8CAF 8BCA mov cx,dx 
: XXXX F3A6 repz cmpsb ;

(1). BPX en HMEMCPY. Introduce un car�cter de tu numero de serie. Romper�s. PRET (F12) hasta que consigas el m�dulo VBRUN300.DLL. Ahora teclea BC *, y busca el hexadecimal del recorte (8BCAF3A674019F928D5E08), y pon un BPX en la situaci�n encontrada. BD * (para evitar innecesarios breaks), e introduce todo tu numero de serie, entonces BE * y aprieta OK... �BOOM! estas en la comparaci�n.

(2). BPX en HMEMCPY. Introduce un car�cter de tu numero de serie. Romper�s. PRET (F12) hasta que consigas el m�dulo VBRUN300.DLL. Ahora teclea BC *, y pon un BPX en el offset (BPX 8CAF) de donde quieres romper el programa. BD * (para evitar innecesarios breaks), e introduce todo tu numero de serie, entonces BE * y aprieta OK... �BOOM! estas en la comparaci�n.

Usando estos acercamientos t� no necesitas modificar el archivo real. �por lo tanto mejor/ m�s f�cil!

Crackeando N�meros de serie en Visual Basic 4+5 (The Sandman)


Crackear Visual Basic todav�a parece a muchos, un hueso duro de roer porque simplemente no pueden hacer un listado muerto de �l y esperar a ver donde van... Por consiguiente nosotros necesitamos adoptar nuevos m�todos para enga�ar a esta barrera natural y una posible manera es localizar rutinas dentro de las librer�as runtime de VB en las que podemos poner trampas (breakpoints) con SoftICE.

Para programar Softice para que localice para nosotros la Rutina de Comparaci�n de String r�pidamente pondremos las tres l�neas siguientes en nuestro archivo WINICE.DAT:
AF4="^s 0 l ffffffff 
56,57,8B,7C,24,10,8B,74,24,0C,8B,4C,24,14,33,C0,F3,66,A7;" 

EXP=C:\WINDOWS\SYSTEM\VB40032.DLL 
EXP=C:\WINDOWS\SYSTEM\MSVBVM50.DLL 

Esto se ha probado en programas VB4 VB5 y funciona, sin embargo, si el programa designado usa Integer/Reals para el n�mero de serie entonces el programa usar� un juego diferente de rutinas en lugar de esas, desviando nuestra Rutina de Comparaci�n de String totalmente...

En orden de combate pienso que he encontrado una rutina de Integer/Real en VB5 en la que podemos poner un BPX eso nos mostrar� el numero de serie *real * que el programa espera que nosotros usemos...

La Rutina VB5 se parece a:

PUSH EBP-20 
CALL MSVBVM50._vbaR8Str    ; Convierte string a Integer/Real 
FCOMP QWORD PTR [00401028] ; Nuestra comparaci�n num�rica! 

Una vez aterrizas en fcomp qword ptr [00401028] Teclea: DL 00401028 para ver el numero de serie *real*. DL no es un error de mecanograf�a, DL quiere decir Visualizar Long/real mientras que la D simplemente tiene la propiedad de usar el formato de visualizaci�n actual... Mira el manual de SoftICE para m�s informaci�n sobre Comandos de SoftICE.

Bien, ahora tenemos algo nuevo para verificar en SoftICE, as� que programa este nuevo Macro de B�squeda en �l...

Abre WINICE.DAT, haz una copia de seguridad primero ... :)
Aseg�rate de que tienes estas l�neas:

EXP=C:\WINDOWS\SYSTEM\VB40032.DLL 
EXP=C:\WINDOWS\SYSTEM\MSVBVM50.DLL 

AF3="^s 0 l ffffffff 
FF,75,E0,E8,85,EF,FF,FF,DC,1D,28,10,40,00,DF,E0,9E,75,03;" 
AF4="^s 0 l ffffffff 
56,57,8B,7C,24,10,8B,74,24,0C,8B,4C,24,14,33,C0,F3,66,A7;" 

ALT-F3 es nuestro b�squeda de Comparaci�n de Integer/Real, s�lo trabaja en VB5
ALT-F4 es nuestra b�squeda de Comparaci�n de String, funciona en VB4 VB5

Crackeando N�meros de serie en Visual Basic 6 (widYa@cL 2011)


Aqu� tengo un m�todo alternativo que podr�a ser �til cogiendo n�meros de serie en VB6. ... Primero abre WINICE.DAT, haz los siguientes cambios:
F5="^x;^dd eax;" 
EXP=C:\WINDOWS\SYSTEM\MSVBVM60.DLL 

Ve al di�logo de registro y rellena tu datos de registro favoritos. Ahora debes entrar en SoftICE (CTRL-D) y poner un breakpoint en __vbaStrCat funci�n (BPX MSVBVM60!__vbaStrCat). Ahora deja SoftICE (X [ENTER]) y aprieta el bot�n de OK en tu di�logo de registro... #bOOm #... ahora nosotros debemos aterrizar aqu�:

:66060B5F PUSH EBP 
:66060B60 MOV EBP,ESP 
:66060B60 MOV EBP,ESP 
:66060B62 PUSH EBP 
:66060B65 PUSH EAX 
:66060B66 PUSH DWORD PTR [EBP+08] 
:66060B69 PUSH DWORD PTR [EBP+0C] 
:66060B6C CALL [661106E8] 
:66060B72 TEST EAX,EAX 
:66060B7A MOV EAX,[EBP+08] ; estamos yendo a ver lo que est� en EAX 
:66060B7D POP EBP          ; estamos sent�ndonos aqu� 
:66060B7E RET 0008 

Ahora teclea los siguientes comandos:

BC * [ENTER] 
BPX 66060B7D [ENTER] 
X [ENTER] 

Desde aqu�..... �Sigue apretando F5 hasta que veas un tipo de numero de serie bueno en la ventana de datos en formato de ancho de car�cter!


The cRACKER's n0tES esta dividido dentro de 12 partes principales:
 TX. Notas del Traductor
 00. INDICE
 01. Ensamblador para Cracker (CoRN2)
 02. SoftICE (Men� de arranque , Configuraci�n, Comandos)
       
 1 Men� de arranque
       
 2 Configuraci�n
       
 3 Comandos
 03. Breakpoints & Detalles de API de Windows
       
 1 Programas restringidos
       
 2 Cajas de di�logo
       
 3 Verificando el Tipo de unidad
       
 4 Acceso a archivos
       
 5 Acceso al Registro
       
 6 Cogiendo n�meros de serie
       
 7 Accediendo a Tiempo & Fecha
       
 8 Generando ventanas
 04. Instrucciones de salto
 05. Instrucciones SET
 06. Tips & Trucos para Crackear
       
 1 Programas restringidos
       
 2 Dongles
       
 3 General
       
 4 Configuraci�n de InstallSHIELD
       
 5 Protecciones con Archivo llave
       
 6 Pantallas molestas
       
 7 L�mites de Runtime
       
 8 Serials
       
 9 Limites de Tiempo
       
10 Programas Visual BASIC
 07. Ventanas de Mensajes Para los Cracker
 08. Identificando funciones, Argumentos, y Variables (Rhayader)
 09. Los Sistemas de Protecciones de comerciales
       
 1 Armadillo
       
 2 C-Dilla SafeDISC
       
 3 SalesAgent
       
 4 SecuROM
       
 5 softSENTRY
       
 6 TimeLOCK
       
 7 VBox
 10. Bitmanipulation (Cruehead)
 11. Teor�a general de Cracking
 12. FAQ

 +A. C�mo contactar conmigo
 +B. �Que es lo Nuevo?


 



The cRACKER's n0TES are Copyright 1998-2000 by TORN@DO of ID.
Todo los Derechos Reservados.
Traducido por
Revisado por X-Grimator.