Solución crackme v2 ASM cibergolen

Iniciado por .:UND3R:., 16 Noviembre 2011, 00:10 AM

0 Miembros y 3 Visitantes están viendo este tema.

.:UND3R:.

Datos importantes:
El Usuario debe cumplir los siguientes requisitos:
-6 caracteres como mínimo
-letras solo en mayúsculas
-letras entre la "A" a la "K"

Si traceamos un poco notaremos funciones muy importantes dentro del crackme:
Citar004015A5  |.  E8 0AFDFFFF   |CALL CrackMe_.004012B4
004012BD  |.  83E8 30       SUB EAX,30                         ; resta a cada valor de ID 30
004015AA  |.  35 4D000000   |XOR EAX,4D                        ; realiza un XOR 4D con el resultado de la resta anterior
004015AF  |.  8981 C8404000 |MOV DWORD PTR DS:[ECX+4040C8],EAX ; mueve el resultado

Esto quiere decir que si introducimos como serial ABCDEF

Ocurrirá lo siguiente:
A    B   C    D    E    F   (Serial introducido)
41  42  43   44  45  46  (Serial en hexadecimal)

Resta a cada valor del ID 30

41-30 42-30 43-30 44-30 45-30 46-30  (Operación)
11      12     13      14      15      16       (Resultado)

Luego realiza un xor con cada valor modificado(- 30) de la ID con 4D
x XOR 4D

XOR 11,4D
XOR 12,4D
XOR 13,4D
XOR 14,4D
XOR 15,4D
XOR 16,4D

Nos dará como resultado lo siguiente:

A  B  C  D  E  F
5C 5F 5E 59 58 5B

Si seguimos traceando llegaremos a otra función muy interesante:
Citar004015CB  |.  E8 F8FCFFFF   |CALL CrackMe_.004012C8
004012D1  |.  83F0 4A       XOR EAX,4A                         ; realiza un XOR 4A con el contenido de [ECX+4040C8] (izquierda a derecha)
004015D1  |.  8882 48414000 |MOV BYTE PTR DS:[EDX+404148],AL   ; mueve el resultado
*En los comentarios podemos ver que realizará

XOR 5C,4A

XOR 5F,4A

XOR 5E,4A

XOR 59,4A

XOR 58,4A

XOR 5B,4A

obtendremos como resultado:
5C 5F 5E 59 58 5B
15 14 13 12 11 4A

Suma todos los caracteres=A9 (15 14 13 12 11 4A)

Suma todos los caracteres=195 (A B C D E F)
(41+42+43+44+45+46)

Fórmula del serial:

Usuario: ABCDEF
Clave: 6566676869706656667-87-1071

-Cada carácter es pasado de hexadecimal a decimal:
ABCDEF:
41=65
42=66
43=67
44=68
45=69
46=70

65 66 67 68 69 70

concatena (strcat) el número de caracteres del USUARIO

65 66 67 68 69 70 6

concatena las tres primeras letras del USUARIO

65 66 67 68 69 70 6 65 66 67

*NOTA: Copia hasta 70 (F) y lo concatena como 07
explicación:
si introducimos como serial DFGHJK el serial hasta lo explicado será de la siguiente manera:

68 70 71 72 74 75 6 68 7

verde=usuario convertido a decimal
naranja=nº de caracteres del usuario
rojo=concatena 68 7 lo lógico sería 68 70 71 pero concatena hasta 70 y no considera el 0 es decir 68 07.

Si el tercer carácter fuese una F quedaría de la siguiente forma:
ABFDEF 656670686970 6 65 66 7

luego concatena A9 en decimal (suma de todas los caracteres modificados, explicado anteriormente)

*Aclaramos que los números hexadecimales menores o iguales a 7 son positivos y mayor o igual a 8 son negativos por lo que A9 es un número negativo

FFFFFFA9 (DWORD)

por lo que quedará en negativo, nunca había visto un serial que utilizara el signo de un número como guiones intermedios.

quedando:
6566676869706656667-87

últimamente concatena FFFFF195 en decimal:
obteniendo:
6566676869706656667-87-1071

NOTA:Si el primer carácter es una F cambia queda de la siguiente manera la fórmula

ID usuario en decimal+último carácter de ID de usuario en decimal+suma de caracteres mod + suma de caracteres.

Gráfico de fórmula general:
00404010  41 42 43 44 45 46 06 41 42 43  A9 95 01 
ID......................................|
                                  LEN ID..|
                                  3 Dígitos ID........|
                                                  Suma MOD|suma ID|

KEYGEN:

El keygen está hecho en OllyScript tiene un solo error y es que cuando muestra el serial antepone un 0, solo permite 6 caracteres, ni más ni menos (el error y la restricción se debe a que OllyScript no es un lenguaje muy fuerte), una vez mostrado el ID y SERIAL, estos son guardados en un documento .txt (ubicado en el path del mismo crackme) para su fácil copia al crackme

Código (asm) [Seleccionar]
VAR VAR70
VAR VF
VAR VALLOC3
VAR LEN_AUX
VAR AUX_N
VAR AUX_W
VAR CONTADORU
VAR CONT_FIN
VAR AUX_Z
VAR VALLOC9_
VAR AUX__2
VAR VALLOC_TAM2
VAR VALLOC_TAM
VAR VALLOC___
VAR COMPS
VAR CONT4_
VAR AUX_3
VAR AUX_2
VAR CONTMOD
VAR VALLOC_
VAR AUX_
VAR AUX
VAR AUX2
VAR VALLOC
VAR VALLOC
VAR CARACTERES
VAR RESP
PREGUNTA:
ASK "Introduzca su ID (en mayúsculas, solo letras de la A a la K, seis caracteres)."
MOV RESP,$RESULT
CMP RESP,0
JE EXIT
EVAL "{RESP}"
LEN $RESULT
MOV CARACTERES,$RESULT
CMP CARACTERES,6
JNE ERROR1
ALLOC 50
MOV VALLOC,$RESULT
MOV VALLOC2,VALLOC
MOV VALLOC3,VALLOC
CMP 0,VALLOC
JE ERROR2
EVAL "{RESP}"
MOV [VALLOC],$RESULT,CARACTERES
BUCLE:
MOV AUX2,[VALLOC2],1
CMP AUX2,0
JE CONTINUAR
ADD AUX,AUX2
INC VALLOC2
JMP BUCLE
CONTINUAR:
CMP [VALLOC],46,1
JE CONTINUAR2
MOV [VALLOC2],CARACTERES,1
JMP CONTINUAR2_
CONTINUAR2:
ADD VALLOC3,CARACTERES
DEC VALLOC3
MOV VALLOC3,[VALLOC3],1
MOV [VALLOC2],VALLOC3,1
MOV VF,1
JMP CONTINUAR3
CONTINUAR2_:
INC VALLOC2
MOV [VALLOC2],[VALLOC],3
CONTINUAR3:
MOV VALLOC2,VALLOC
ALLOC 50
MOV VALLOC_,$RESULT
MOV VALLOC_2,VALLOC_
SUB CARACTERES,1
INC VALLOC2
CONTINUAR3_:
MOV AUX_,[VALLOC2],1
CMP CONTMOD,CARACTERES
JE CONTINUAR4
SUB AUX_,30
XOR AUX_,4D
XOR AUX_,4A
MOV [VALLOC_],AUX_
INC VALLOC2
INC VALLOC_
INC CONTMOD
JMP CONTINUAR3_
CONTINUAR4:
MOV [VALLOC_],4A
INC CARACTERES
CONTINUAR4_:
CMP CONT4_,CARACTERES
JE CONTINUAR5
MOV AUX_2,[VALLOC_2],1
ADD AUX_3,AUX_2
INC VALLOC_2
INC CONT4_
JMP CONTINUAR4_
CONTINUAR5:
ALLOC 50
MOV VALLOC_TAM,$RESULT
MOV VALLOC_TAM2,VALLOC_TAM
MOV [VALLOC_TAM2],AUX
MOV AUX,[VALLOC_TAM2],1
INC VALLOC_TAM2
MOV AUX__2,[VALLOC_TAM2],1
CONTINUAR5_:
ALLOC 50
MOV VALLOC___,$RESULT
MOV [VALLOC___],#FFFFFF#,6
ADD VALLOC___,3
MOV [VALLOC___],AUX
SUB VALLOC___,3
MOV AUX,[VALLOC___]
REV AUX
MOV AUX,$RESULT
ITOA AUX, 10.
MOV AUX,$RESULT
CONTINUAR6:
ALLOC 50
MOV VALLOC9_,$RESULT
MOV [VALLOC9_],#FFFFFF#,6
ADD VALLOC9_,3
MOV [VALLOC9_],AUX_3
SUB VALLOC9_,3
MOV AUX_3,[VALLOC9_]
REV AUX_3
MOV AUX_3,$RESULT
ITOA AUX_3, 10.
MOV AUX_3,$RESULT
MOV VALLOC2,VALLOC
MOV CARACTERES2,CARACTERES
CMP VF,1
JE CONTINUAR6_
ADD CARACTERES2,4
JMP CONTINUAR7
CONTINUAR6_:
INC CARACTERES2
CONTINUAR7:
CMP CONT_FIN,CARACTERES2
JE SALIR_
MOV AUX_Z,[VALLOC2],1
ITOA AUX_Z, 10.
MOV AUX_Z,$RESULT
EVAL "#{AUX_Z}#"
MOV [VALLOC2],$RESULT,1
INC VALLOC2
INC CONT_FIN
MOV AUX_Z,0
JMP CONTINUAR7
SALIR_:
SUB VALLOC2,2
MOV VAR70,[VALLOC2],1
CMP VAR70,70
JNE SALIR__
MOV [VALLOC2],#07#
DEC CARACTERES2
JMP SALIR
SALIR__:
INC VALLOC2
MOV VAR70,[VALLOC2],1
CMP VAR70,70
JNE SALIR
MOV [VALLOC2],#07#
SALIR:
CMP CARACTERES2,CONTADORU
JE SALIR2
MOV AUX_N,[VALLOC],1
ITOA AUX_N
MOV AUX_N,$RESULT
ADD AUX_W,AUX_N
INC CONTADORU
INC VALLOC
MOV AUX_N,0
JMP SALIR
SALIR2:
EVAL "Usuario:{RESP} Clave:{AUX_W}{AUX_3}{AUX}{AUX__2}"
MSG $RESULT
FREE VALLOC
FREE VALLOC_
FREE VALLOC_TAM
FREE VALLOC___
WRT "Serial.txt", $RESULT
MSG "Se ha creado un .txt con el ID y SERIAL en el path del crackme"
JMP EXIT
ERROR1:
MSG "Error:el ID debe ser de seis caracteres!!"
JMP PREGUNTA
ERROR2:
MSG "Error inesperado"
EXIT:
RET


Comentario:
Primero que todo darles las gracias a cibergolen por compartir tal crackme que debe haberle quitado su buena cantidad de tiempo, considerando que utilizó ASM, también decirle que es bienvenido por todos los usuarios de este subforo, será entretenido contar con su ayuda. También disculparme por la falta de tutorial pero codear el keygen en OllyScript me quitó demasiado tiempo ya que tuve que inventar muchas ideas para poder hacer que OllyScript hiciera lo que yo quisiera.
También decirle a MCKSys Argentina que es un desesperado, le dije que me esperara un poco que estaba haciendo el keygen pero no se aguantó  :xD aun espero su tutorial de como injertar una DLL en visualbasic en fin saludos para el y para todos los que se tomaron la molestia de leer este mini tutorial y un saludo para mi.

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

MCKSys Argentina

Cita de: .:UND3R:. en 16 Noviembre 2011, 00:10 AM
También decirle a MCKSys Argentina que es un desesperado, le dije que me esperara un poco que estaba haciendo el keygen pero no se aguantó
;D

Muy buen tute. Me gusto mucho el "lenguaje" del keygen  :)

PD: Estoy tratando de armar el tute de la DLL. Paciencia...  :P
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


.:UND3R:.

Cita de: MCKSys Argentina en 16 Noviembre 2011, 00:51 AM
;D

Muy buen tute. Me gusto mucho el "lenguaje" del keygen  :)

PD: Estoy tratando de armar el tute de la DLL. Paciencia...  :P

Muchas gracias MCKSys Argentina, saludos :D

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

tena


karmany

Muy muy bueno, felicidades y gracias por tu trabajo.

Como bien te habrás dado cuenta, el "lenguaje" de los scripts en Olly tiene muchas limitaciones. Es mejor programar tú mismo eso en ensamblador directamente.

.:UND3R:.

Cita de: karmany en 16 Noviembre 2011, 16:27 PM
Muy muy bueno, felicidades y gracias por tu trabajo.

Como bien te habrás dado cuenta, el "lenguaje" de los scripts en Olly tiene muchas limitaciones. Es mejor programar tú mismo eso en ensamblador directamente.

Muchas gracias Karmany, efectivamente creo que lo mejor será ASM, Saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

$Edu$

Muy bueno Under, no te alcanzo mas con el ritmo que llevas jaja, ya la semana que viene empiezo las vacaciones y continuare pero cada tanto te necesitare en el msn :P Saludos!

.:UND3R:.

Cita de: $Edu$ en 16 Noviembre 2011, 21:41 PM
Muy bueno Under, no te alcanzo mas con el ritmo que llevas jaja, ya la semana que viene empiezo las vacaciones y continuare pero cada tanto te necesitare en el msn :P Saludos!
Muchas gracias $edu, pero no es difícil solo debes dedicarle tiempo, en cuanto al msn a la derecha del mi baner en el foro podrás ver mi disponibilidad en msn

Saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

Flamer

felisidades und3r buen trabajo
yo ya abia encontrado el serial para ABCDEFG antes que tu publicaras tu tutorial pero hastai lo deje y lo pase a la carpeta de solucionados no le busque al keygen medio flojera
pero bueno buen trabajo espero tu primer crackme para darle matarile jajajaja

saludos flamer y sus angeles del infierno

.:UND3R:.

Cita de: Flamer en 17 Noviembre 2011, 00:21 AM
felisidades und3r buen trabajo
yo ya abia encontrado el serial para ABCDEFG antes que tu publicaras tu tutorial pero hastai lo deje y lo pase a la carpeta de solucionados no le busque al keygen medio flojera
pero bueno buen trabajo espero tu primer crackme para darle matarile jajajaja

saludos flamer y sus angeles del infierno

Muchas gracias, jajaja si crackme habrá que hacer uno cuando tenga los conocimientos necesarios lo haré (estoy en ello), por lo demás podrías haber hecho el tutorial para sacar aunque sea la clave de ABCDEF jeje en fin muchas gracias nuevamente esperamos un crackme nuevo por parte tuya, Saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)