Test Foro de elhacker.net SMF 2.1

Programación => Ingeniería Inversa => Mensaje iniciado por: _Enko en 20 Octubre 2011, 20:43 PM

Título: keygenme4 console
Publicado por: _Enko en 20 Octubre 2011, 20:43 PM
Hola, como vi que se han quedado sin apps para resolver, hice uno mas.

Objetivo: realizar un keygen
  pueden postear aqui user y serial valido.
Bonus: la contraseña del codigo fuente es  la suma de serials de estos usuarios:
ABCD, EFGH, IJKL (sin las comas, simplemente los 3 serials juntos)

Parche: no vale patch, en realidad, si abren la ejecutable en olly, esta señalado donde hacer el patch, asi que no presenta gran desafio.

Dificultad: no tan facil,l no tan dificil. Yo he tardado una hora en generar la rutina que me diera serials validos. (y eso que yo hice la rutina para comprobar la validez)

Formato:
user son 4 caracteres ascii cualquiera.
serial son 8 caracteres hexadecimales, un numero de 32bit rempresentado en ascii.

La generacion tiene dos trucos, analicen el codigo bien ^^
Cualquier duda es bienvenida



le dejo los links y mirrors
http://www.mediafire.com/?2cl5c7vplrkvwvz
http://www.megaupload.com/?d=1CIXGZCR




Título: Re: keygenme4 console
Publicado por: Flamer en 21 Octubre 2011, 02:42 AM
lo boy a rebisar aber que tal pero no te aseguro nada (esque ando corto de tiempo)si esta fasil publico la contraseña para mi nick
saludos
Título: Re: keygenme4 console
Publicado por: .:UND3R:. en 21 Octubre 2011, 03:24 AM
Cita de: Flamer en 21 Octubre 2011, 02:42 AM
lo boy a rebisar aber que tal pero no te aseguro nada (esque ando corto de tiempo)si esta fasil publico la contraseña para mi nick
saludos

_enko siempre realiza crackmes extraños no tan fáciles de resolver jeje

Saludos
Título: Re: keygenme4 console
Publicado por: Tinkipinki en 21 Octubre 2011, 09:37 AM
Ok _Enko, vamos a probarlo.. ;-)

Saludos
Título: Re: keygenme4 console
Publicado por: _Enko en 21 Octubre 2011, 15:28 PM
Este keygenme esta basado en varias cosas a tener en cuenta:

*)numeros pseudo aleatorios
*)A xor B =  C  => C xor B  = A
*)ROR X,Y = C => ROL C, Y = X
*)+ una pequeña trampilla para detectar indirectamente la presencia de un debugger.
Título: Re: keygenme4 console
Publicado por: .:UND3R:. en 21 Octubre 2011, 19:09 PM
Cita de: _Enko en 21 Octubre 2011, 15:28 PM
Este keygenme esta basado en varias cosas a tener en cuenta:

*)numeros pseudo aleatorios
*)A xor B =  C  => C xor B  = A
*)ROR X,Y = C => ROL C, Y = X
*)+ una pequeña trampilla para detectar indirectamente la presencia de un debugger.

Como actúa el keygenme si detecta el debugger?, Saludos
Título: Re: keygenme4 console
Publicado por: _Enko en 21 Octubre 2011, 19:14 PM
notese que dije "indirectamente"... :silbar:

El programa no busca ningun debugger, pero si hay uno presente, es probable que un serial valido sea invalido y al reves, que un serial invalido se convierta en valido.
Título: Re: keygenme4 console
Publicado por: PeterPunk77 en 3 Noviembre 2011, 13:39 PM
El keygen:
http://www.megaupload.com/?d=0184EMWP

Saludos.
Título: Re: keygenme4 console
Publicado por: Tinkipinki en 3 Noviembre 2011, 19:13 PM
Felicitaciones PeterPunk77 ...... ;-)
Título: Re: keygenme4 console
Publicado por: _Enko en 4 Noviembre 2011, 01:59 AM
Hiciste un muy trabajo reverseando e invirtiendo el codigo   :P



Felicitaciones. ;-)

pd: tambien mola que el keygenme este hecho con masm :)
pd2: no me tome la molestia de anotar la secuencia pseudo-aleatoria, simplemente use el mismo rand y envie la secuencia a la pila.

dejo las rutinas originales por si alguien le da curiosidad.

Código (asm) [Seleccionar]

proc validate, user, serial
locals
s dd ?
endl
mov esi, [user]
mov esi, dword[esi]
mov edi, [serial]
lea eax, [s]
cinvoke sscanf, edi, szFmtHex, eax
mov edi, [s]
mov ebx, 8
.encode:
stdcall Rand, 5
mov ecx, eax
add ecx, 3
stdcall Rand, 64
add eax, 8
xor edx, edx
div ecx
mov ecx, edx
ror esi, cl

stdcall Rand, 5
mov ecx, eax
add ecx, 3
stdcall Rand, 64
add eax, 8
xor edx, edx
div ecx
mov ecx, edx
ror edi, cl

xor edi, esi
dec ebx
jnz .encode
mov eax, edi
ret
endp

proc generate, user, key
locals
s dd ?
endl
mov ebx, 8
mov esi, [user]
mov esi, dword[esi]
.initrand:
stdcall Rand, 5
add eax, 3
push eax
mov ecx, eax
stdcall Rand, 64
add eax, 8
push eax
xor edx, edx
div ecx
mov ecx, edx
ror esi, cl
stdcall Rand, 5
add eax, 3
push eax
stdcall Rand, 64
add eax, 8
push eax

dec ebx
jnz .initrand

mov edi, [key]
lea eax, [s]
cinvoke sscanf, edi, szFmtHex, eax
mov edi, [s]
mov ebx, 8
.decode:
xor edi, esi
pop eax
pop ecx
xor edx, edx
div ecx
mov ecx, edx
rol edi, cl

pop eax
pop ecx
xor edx, edx
div ecx
mov ecx, edx
rol esi, cl
;xor edi, esi
dec ebx
jnz .decode
;xor edi, esi
mov eax, edi
ret
endp

proc Rand, range  
mov eax,[range]
imul edx, [randseed], 0x08088405
inc edx
mov [randseed], edx
mul edx
mov eax, edx
ret
endp