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.