ESTUDIO COLECTIVO DE DESPROTECCIONES
Última Actualizacion: 25/10/2001

Programa Publicity v3.5 (Build 1) W95 / W98 / NT
Descripción Programa para hacer etiquetas, tarjetas, posters, etc...todo por $15 USA
Tipo Trial de 30 dias
Tipo de Tutorial [X]Original, []Adaptación, []Aplicación, []Traducción
Url http://www.softcentre.com
Protección Serial Number
Dificultad 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas SoftIce v4.0, Ultraedit y VB5
Objetivo Obtención de un número de Serie, creación de KeyMaker y Patch
Cracker Mr.GReeN
Grupo Whiskey Kon Tekila
Fecha 07 de Noviembre de 1999

INTRODUCCION
En este tutorial vamos a examinar una simple rutina de generación de número de serie y como traducir del Win32Asm a cualquier lenguaje de Alto Nivel la rutina, con el objeto de crear un KeyMaker para este programa y además aplicar un patch.

Bien, al abrir la ventana de registro nos encontramos que además de las cajas Nombre/ Serial hay una tercera con un numerito asignado para tí solo y que no podemos alterar desde la caja. Don't matter, hehehehe
AL ATAQUE
Bien, para ahorrar tiempo y complejidad al tutorial, diré que existe una rutina que conviente el nick en minusculas. Asi pues, comencemos con nuestra tarea.

Entramos en Soft-Ice previo BPX HMEMCPY y seguimos con los pasos reglamen- tarios que todos ya conocemos.

k!, Ya hemos llegado. Las direcciones que aqui se mostrarán son ficticias, solo para uso informativo. Bien, nos encontramos con la rutina de creación de Serial:

445EA3 CALL 00451514; Convierte el NICK en minúsculas.

Traceamos y llegamos hasta donde nos interesa....

445EC4 MOV EAX, [EBP-0088] ; Contador que no nos interesa. Bucle!!.

-------- TEST EAX, EAX ; Mira si EAX = 0.

-------- JS 00445EEA ; Si Eax es = 0 salta y salimos a Kernel otra vex !!!!

445ECE M0VSX ECX, BYTE PTR [EAX+EBP-00CC]; Almacena cada uno de los caracteres del nick en ECX, ¡¡¡¡¡¡¡¡¡¡¡¡PERO COMENZANDO AL REVES!!!!!!!!!!!!!!. El cáculo se inicia con el último caracter del nick

-------- IMUL EAX, ECX, 00A2AFB7; Multiplica y deja en Eax, el valor de Ecx * 10661815 (= 00A2AFB7 Hex).

-------- ADD [EBP-08C], EAX ;Almacena en este offset el valor de EAX que se irá sumando en EBP-08C y que luego, con otra operación generará el Serial correcto.

-------- DEC DWORD PTR [EBP-088]; Contador = nº de cracteres del nick, decrementando. No nos interesa pá ná.

-------- JMP 0045EC4; Salta pa'rriba.

Salimos al Kernel y pulsamos F12 hasta entrar en la rutina de nuevo!.

445F18 MOV ECX, [EBP-008C] ; En Ecx se almacena la cifra que anteriormente se calculó.

-------- JBE 00445F2A ; Salta madikita, salta!

445F2A MOV EDX, [EBP-0090] ; Almacena en Edx nuestro ID personal. (El numerito de la caja de enmedio)

-------- SUB EDX, ECX ; Tacháaaaaaaaaaaan!!! Aquí está nuestro Número de Serie buscado. Al numerito calculado anteriormente se le resta nuestro numerito ID, pa dar el Serial bueno.... Hehehehehehehehehe. Yastoi registrao !!!!!

-------- JMP 00445F32; Salta y compruebalo !!!

445F32 ADD ESP, 4 ; Bah, ná!.

---------- CMP EAX, EDX; PATCH , PATCH! Aquín vá el patch!!! Compara nuestro fake serial con el serial correcto!!!!. Por lo tanto cambiamos por esto: CMP EDX, EDX, asi si hacemos que siempre se compare con el bueno.....heheheheheh

-------- JZ 445F5B; Ok! Thank you for registering this shit !

***************************************

Pos bueno, yastá entendida la rutina que genera el serial correcto, podemos hacer en cual- quier lenguaje de alto nivel el Keygen correspondiente a este programilla shareware. Solo hay que recordar que el NICK debe estar en minusculas y qye empieza por el último carac- ter.

Valga un sencillo ejemplo en VBasic, ok?, a lo bestia y sin depurar. :-O

Private Sub Command1_Click()
cifra = 10661815
' (OOA2AFB7 hexadecimal)
n$ = LCase(Text1.Text)
' almacenamos en n$ nuestro nick
L= Len(n$)
' metemos en L la longitud del nick !!

For x = 1 To L ' Iniciamos el bucle
a$ = Mid$(n$, x, 1)
' Vamos de caracter en caracter
b$ = a$ + b$
' y metemos nuestro nick en b$, pero al REVES :)
Next
' No pares, sigue, sigue !!

For y = 1 To L
' Iniciamos el bucle
z$ = Mid$(b$, y, 1)
' Vamos de caracter en caracter
ka = Asc(z$)
' Almacenamos en ka el valos ASCII de cada caracter de nuestro nick
eax = ka * cifra
' Almacenamos en eax un valor que :
ebp = ebp + eax
' a su vez queda en Ebp sumandose a cada paso

If ebp > 4296967295# Then ebp = ebp - (4294967295# + 1#) ' Uaalllllaaaaa ! que es esto ?, joder, esto no está en la rutina ASM ! Hehehehehe ;-) Pues bien. Llega un momento en que EBP se desborda !, luego hay que partir de 0 de nuevo. Ese numero: 4296967295 es FFFFFFFF en hexadecimal, pero para que se desborde le hamos de añadir 1, asi vuelve a 0 de nuevo y continúa el cálculo del serial, ok? Si esta rutina no la hacemos el keygen no dará resultado.

Next ' No pares, sigue, sigue !!

serial = ebp - Text2.Text
' Bien, bien. Al resultado de EBP le restamos nuestro ID per- sonal, entrado en la 2da. caja, perooooooo nos puede dar serials negativos puesto que el numero calculado en EBP a veces es menor que el ID, asi que:

If serial < 0 Then serial = -serial ' convertimos los serials negativos en positivos

Text3.Text =
serial 'Sacamos por pantalla nuestro premio a la constancia!!!!

End Sub ' Adiós !


Y ya está todo hecho Newbies ;-). AstalaVista

  
*±±========-*-*-*-* P E R S O N A L   G R E E T Z *-*-*-*-========±±*
    A todos los Crackers del pasado, del presente y del futuro.
[ Entrada | Documentos Genéricos | WkT! Web Site ]
[ Todo el ECD | x Tipo de Protección | x Fecha de Publicación | x Orden Alfabético ]
(c) Whiskey Kon Tekila [WkT!] - The Original Spanish Reversers.
Si necesitas contactar con
nosotros , lee esto antes e infórmate de cómo puedes ayudarnos