BuSCaR La RuTiNa De GeNeRaCioN DeL SeRiaL y CReaR uN KeyGeN
En esta seccion sera necesario un conocimiento basico/medio de ensamblador de 32bits para poder realizar el keygen. Siento no ampliar a mas lenguajes de programacion, pero este es en el que mas nivel tengo. Por el contrario, es uno de los mejores, por no decir el mejor, lenguaje de programacion para realizar los keygen porque el codigo en el que nos movemos es Ensamblador, y muchas de las veces tan solo debremos copiar & pegar y hacer algunos cambios.
Antes de comenzar esta seccion te recomiendo que te leas la de como conseguir un serial correcto para no volver a repetir todo ;)
- Una vez encontrado el numero de serie correcto (el cual usaremos al final para comprobrar si nuestro keygen funciona correctamente) entramos en la CALL que genera el serial correcto (repito, leer la seccion de obtencion del serial). Despues de un buen rato encontramos la rutina que genera el serial y la estudiamos: observamos como maneja el nombre de ususario para hallar el serial (Ej.: Cojo 1º letra la multiplico por la ultima, cojo la 2º letra y la multiplico por la 3º etc)
- Despues de tomar unos apuntes (lo que yo suelo hacer despues de haber separado la rutina que genera el serial es imprimir el codigo e ir apuntando lo que hace cada instruccion, os aconsejo que hagais lo mismo).
- Aquí os presento la introduccion que deben llevar todos los keygen (esto es un simple ejemplo, en este codigo hay un tipo de variables para las pass, pero en otros programas haran falta otro tipo de variables o simplemente haran falta mas de las que hay):
.MODEL TINY
.CODE
.386
ORG 100h
Start: jmp LetsRock
Intro db 13,10,'WinZip X.xx KeYgEn CopyAll 2000 CoDeD bY Mr Burns [K-FoR]',10,13
db 'WeBSiTeS: http://go.to/mr_burns',10,13
db ' http://pagina.de/kfor',10,13,10,13
db 'eNTeR YouR NaMe: $'
NameIn db 26h,0
NameIn2 db 26h DUP(0)
PassScreen db 10,13,'YouR PaSSWoRD iS: '
PassOut db 8 DUP(0)
EndPassOut db 10,13, '$'
TempPass db 8 DUP(0)
TempPassEnd db 0
Pass1 dd 0
FinalPass dd 0
LetsRock:
mov ah,09h ;Pasa un texto por pantalla
lea dx,Intro
int 21h
mov ah,0Ah ;Captura nuestro Nombre
lea dx,NameIn ;Maximo de 38 caracteres
int 21h
- Despues de esto lo que debemos hacer es introducir las instrucciones pertinentes para generar el serial. Hay muchas veces en las que lo unico que hace falta es copiar, pegar y hacer algunas modificaciones, las mas habituales son:
mov eax, offset [XxXxXx] ===> mov eax, offset etiqueta (sustituimos la direccion por la etiqueta que indique la posicion)
mov eax,dword ptr [ebp+08] (nombre) ===> mov eax, ebx (nombre)
jmp XxXxXx ===> jmp etiqueta
- Como ya he dicho antes en esta seccion es necesario el conocimiento de Asm ya que no voy a explicar como se crea un keygen. Simplemente voy a guiaros.
- Despues de haber hecho la rutina que genera el serial correcto, debemos pasar ese Serial a la pantalla. Existen dos formas una en forma decimal o en forma hexadecimal. Para ello son necesarias unas rutinas que son siempre iguales:
Pasar el serial a Base Decimal:
lea si,TempPassEnd-1
mov eax,Pass
mov ecx,0Ah
xor edx,edx
KeepGoing:
div ecx
add dl,30h
mov [si],dl
dec si
xor edx,edx
test eax,eax
jne KeepGoing
inc si
Loop_Screen:
movsb
cmp byte ptr [si],00
jne Loop_Screen
mov ah,09h
lea dx,ScreenPass
int 21h
mov ah,4Ch
int 21h
Pasar el serial a Base Hexadecimal:
ConvertHexadecimal:
lea si,TempPassEnd-1 ;La conversion comienza por el final y termina en el principio
mov edx,4 ;edx= numero de bytes que saldran por pantalla
KeepGoing:
xor ebx,ebx
mov bl,al
movzx ebx,bl
and bl,0Fh
add bl,030h
cmp bl,39h
jle Heaven1
add bl,7
mov byte ptr [esi],bl
dec esi
jmp Heaven2
Heaven1:
mov byte ptr [esi],bl
dec esi
Heaven2:
mov bl,al
movzx ebx,bl
shr bl,04
add bl,030h
cmp bl,39h
jle Heaven3
add bl,7
mov byte ptr [esi],bl
dec esi
jmp Heaven4
Heaven3:
mov byte ptr [esi],bl
dec esi
Heaven4:
shr eax,08
dec edx
jne KeepGoing
inc esi
lea edi,PassOut
CopyNumber:
movsb
cmp byte ptr [esi],0
jne CopyNumber
mov ah,09h
lea dx,PassScreen
int 21h
mov ah,4Ch
int 21h
- Por lo que habeis podido comprobar tan solo os he presentado el comienzo y el final de un keygen en Pure Asm. La parte mas jugosa e importante de el keygen es la generacion de el pass correcto, el cual puede llegar a ser extemadamente facil. Espero que os halla servido tanto como me sirvio a mi un tutorial sobre Keygens en Asm y en el cual venian unas secciones parecidas a estas ya que no todo el mundo sabe como pasar por pantalla su serial en decimal o hexadecimal.