Bien, para ahorrar tiempo y complejidad
al tutorial, diré que existe una rutina que intercala
entre el Apellido y el Nombre una cadena con la que se
vá a generar el serial: "Flash 32". Por
los tanto la cadena completa queda asi: Mr.GReeNFlash 32[WkT!]
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:
41FBA5 MOV ECX, BYTE PTR [EAX]; Carga en ECX cada uno de los
caracteres de la cadena
41FBA8 XOR
ECX, DWORD PTR [ESP+10]; Valor inicial ESP+10=FFFFFFFF y
guarda el resultado en ECX.
41FBAC XOR ECX, 13579ACE; Lo xorea con este valor
(dec=324508366) y vuelve a guardar el resultado en ECX.
41FBB2 INC EAX; Siguiente carácter.
41FBB3 MOV DWORD [ESP+10], ECX; Guarda en ESP+10 el valor de ECX
(ya no será FFFFFFFF lo que está almacenado ahí).
41FBB7 CMP BYTE PTR [EAX], 00 ; Se alcanzó el final de la
cadena????
41FBBA JNE
0041FB9D No!,
pues salta pa arriba a una dirección que no interesa y
continúa calculando!.
41FBBC MOV
EAX, DWORD PTR [ESP+10] Si!. Se acabó la cadena y se guarda
en EAX el valor almacenado en ESP+10.
41FBB2 LEA
EDX, DWORD PTR [ESP+000000BC] Carga en EDX nuestro serial malo
entrado en la 3º caja de la ventana de registro.
41FBC7 XOR EAX, 2468BDF0; Vuelve a xorear el resultado del
cálculo de la cadena por 610844144 (decimal)
41FBCC PUSH
EDX;
Guarda el serial malo
41FBCD MOV
DWORD PTR [0046ABF4], EAX; Guarda en esta offset el valor final:
NUESTRO SERIAL CORRECTO!
41FBD2 CALL 004421DD; Llamada no interesante!!! Se curra el
serial malo y lo guarda en EAX!.
41FBD7 MOV ECX, DWORD PTR
[0046ABF4]; Almacena
el serial bueno en ECX
41FBDD ADD ESP, 00000004; No nos interesa!.
41FBE0 CMP EAX, ECX; Compara el serial Malo y el Bueno!
AQUI PATCHEA- MOS y hacemos eque ECX se compare consigo
mismo!!!
41FBE2 JZ 0041FC12 ------>
REGISTRADO!
***************************************
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()
Dim nick As
String
Dim ecx, eax, paso, x As Double
' Text2.Text =
Nombre y Text1.Text = Apellido. Cadena= Mr.GReeNFlash 32[WkT!]
nick = Text2.Text + "Flash 32" + Text1.Text
L =
Len(nick) 'Longitud
de la cadena.
paso = 0 'Porque FFFFFFFF = 0 :) Es ESP+10 como valor inicial
For x = 1 To L '
Iniciamos el bucle
ecx = Asc(Mid$(nick, x, 1))'Cargamos en ECX cada uno de los
caracteres de la cadena
ecx = ecx
Xor paso 'recuerda
paso = ESP+10
ecx = ecx Xor 324508366# 'XOR ECX, 13579ACE
paso = ecx 'MOV
[ESP+10], ECX
Next 'Salta si no
es 0
eax = paso 'MOV
EAX, [ESP+10]
eax = paso Xor 610844144# 'XOR EAX, 2468BDF0
(RESULTADO
NO ES EL SERIAL BUENO)
Tenemos que hacer
algunos reajustes :) El resultado en EAX está desbordado
por lo tanto:
If eax <
4294967295# Then eax = (eax - 4294967295#) OK!!! pero no sale negativo!!!
(4294967295 = FFFFFFFF)
eax = -eax 'Pues lo convertimos en
positivo!!!!
Text3.Text = eax
Nuestro
Serial pá nuestro nick!!!!!
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.
|