Documentos de Académico
Documentos de Profesional
Documentos de Cultura
0 – KEYGEN
Como comente este tutorial es para complementar el tutorial de lior que hizo sobre como parchar
el Perfect Keylogger , así que te conviene leerlo para que podamos comprender mejor el software
y podamos hacer su keygen . Bueno yo entenderé que ya lo leyeron, así comencemos de una vez
;) .
Primero abrimos el software en el ollydbg , hacemos click derecho SEARCH FOR – ALL
REFERENCED TEXT STRINGS , miramos la lista de strings y hacemos click derecho SEARCH
FOR TEXT .buscamos la palabra registration error destildamos case sensitive y tildamos Entire
scope, luego apretamos ok . Encontramos la palabra como se muestra en la imagen y para en la
dirección 41ABD6 Y hacemos click derecho FOLOW IN DISASEMBLER
Como vemos paramos en la dirección 041ABD6 donde se encuentra el mensaje de de chico malo,
Registration error .
pues si subimos encontraremos como en el tutorial de lior , las apis donde concatena la clave que
ingresemos y la api que compara . Pero bueno a nosotros nos interesa para este tutorial, así que
seguiremos subiendo hasta llegar a 0041A96A y le damos un Breakpoint .Parece una zona
interesante ,demos Run con F9 y pongamos mi User y una clave para que pare en este BP
Ingresamos nuestro user abel y serial 1111 – 1111 – 1111 – 1111 y paramos en 0041A96A. Tal
vez si eres novato como yo ,te preguntaras por que puse ahí ese BP , pues es muy fácil al buscar
las string registration error subimos a ver que había y me intereso las apis lstrlenA y lstrcpyA ,
googleamos para saber para que sirven
strlen = La función strlen se utiliza para obtener la longitud de una cadena de caracteres
0041A971 :
Vemos que comienza la api strlen y nos muestra la string = "_r <()<1-Z2[l5,^"
Si apretamos F8 cuando estamos 0041A97A , vemos que muestra en eax la longitud del string ,
osea eax = 00000010 si damos click derecho en eax y elegimos Modify , nos mostra en signed el
valor 16 que es la longitud en decimal
0041A97C : nos muestra el user que pusimos , en este caso mi nombre Abel
0041A97F : mueve eax a ebx
Cuando estemos en 0041A984 apretemos F8 y nos aparecerá en eax = 00000004 , esta vez no
hay necesidad de hacer click derecho – modify para ver el valor en decimal ,pues es el mismo
valor
Bueno para no hacerlo mas largo seguiremos traceando a la rutina del serial que comienza en
0041A9B6
Comencemos la parte interesante de este tuto para entender cómo trabaja este algoritmo, tratare
de hacer lo más detallado posible ya que este tutorial va dirigido a personas que recién empiezan
, el algoritmo recorrerá la rutina que genera el serial hasta cumplir una condición. Al principio no
hara mucho pero a la segunda pasada ya verán ;)
Estando en
pone 19 a la pila
- 0041A9BA |. 99 |CDQ
si es que no te acuerdas de que va esta instrucción puedes darle una leída al capítulo de 16
de introducción al cracking con ollydbg desde cero. Bueno en nuestro caso dividirá eax =
00000000
Entre 10
Y lo pone ebx
Y lo pone a ecx
- 0041A9C4 |. 99 |CDQ
Hasta aca como vemos no paso nada importante , asi que desde aqui para adelante nos
interesara estas instrucciones, ya veran por que ;)
0041A9D4 |. 99 |CDQ
Se hara una división eax = 3E entre ebx= 19 ,el resultado se va eax y el residuo a edx . antes no
lo dije por que no lo pensé necesario pero yo me complique como saco el residuo en
hexadecimal, asi que muy fácil vemos los registros
Vemos que eax vale 3E y ebx vale 19 si nos fijamos en la calculadora o si nos vamos a eax y
hacemos click derecho – y elegimos modify en el registro eax
Vemos que que eax= 3E su valor decimal es 62 , hacemos lo mismo con ebx y su valor decimal
es 25 . ahora yo soy flojo asi que entre a cualquier web que me haga ese trabajo
http://es.calcuworld.com/calculadoras-matematicas/calculadora-de-resto/
mueve DL al primer byte de [ecx] , entonces DL es el resultado de la operación que hicimos hace
poco con el residuo de la división que es 4D y lo moverá [ecx] que en el dump veremos que es
donde se encuentra la constante
Salta al inicio de la rutina que genera nuestro serial , supuestamente hasta que llege al largo de
nuestro serial. Digo supuestamente pues si ponemos un nombre que sea mas 16 digitos repetirá
el bucle hasta completar y sobreescribira en el contenido de la dirección de la constante hasta
llegar hacer todo la operación con el nombre que pusimos,pueden probarlo si gustan .
Tenemos :
mi nombre : Abel
Convertimos en hexadecimal ambos y repetimos cada letra de mi user hasta completar el largo de
mi de la constante, osea 16 digitos
- Abel = 61 62 65 6c 61 62 65 6c 61 62 65 6c 61 62 65 6c 61 62
- Constante = 22 5f 72 20 3c 28 29 3c 31 2d 5a 32 5b 6c 35 2c 5e 22
Tomamos cada letra de mi user y la constante , y operamos con todas las letras
Para culminar el tutorial haremos nuestro keygen , yo elegiré python tu puedes elegir el lenguaje
que prefieras
AbelJM
Crackslatinos
Lima – Peru
2017