Crackme 03 by _Enko Actualizado winxpsp3 compatible

Iniciado por _Enko, 16 Agosto 2011, 06:27 AM

0 Miembros y 1 Visitante están viendo este tema.

Flamer

MCKSys
Argentina le puse un break point ala instruccion 00402683 que es un push que es la que esta antes del call 00402689 para despues presionar f7 y entrar al call pero no se detiene nunca en push

_Enko

#31
No se detiene en 00402683 porque el serial no cumple los requesitos minimos.
La 2da y 3er llave maestra generada  a partir del serial  tienen que ser un intervalo (inicial - final) dentro del programa.

MCKSys Argentina

La funcion que descifra es alzanzada luego de los chequeos del serial.

Para el analisis anterior, usé IDA (ademas de Olly). Esta herramienta siempre debe estar presente!

Debo admitir que Fasm compila distinto a MASM, por eso se puede complicar un poco a la hora de analizar el inicio/fin de las funciones.

Noté que el compilador usa JMPs, aunque no se porque hace eso...

Cita de: _Enko en 17 Agosto 2011, 18:44 PM
Sobre cryptool, no hara falta, dentro del bloque encryptado hay cadenas de texto... y sabiendo que son caracteres hexa... las posibilidades son muy pocas, manaualmente con un poco de tiempo se pueden deducir.

Asi es, el problema es el factor tiempo (o la falta de él  :P)

Saludos!
MCKSys Argentina

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


_Enko

Ni fasm ni masm compilan  :silbar: Ensamblan.

Los codigos ensamblados entre masm y fasm son sumamente similares si es el mismo codigo, y es el mismo programador.

Lo que ocurre, es que se notan los estilos que usa un programador ya que la ejecutable es un reflejo del codigo fuente (mas en fasm, por eso se llama flat assembler)

fasm no es el que usa los jmps, los use yo en esta ocacion por pereza.
Normalmente se coloca las variables/constanes/cadenas  en la sección .data
Y en este crackme use jmps porque no queria subir en el codigo fuente para volver a bajar a donde estaba antes....
Entonces, hice lo que borland con pascal/delphi viene haciendo hace años
Citar
    jmp saltercadena
cadena db 'hola mundo',0
saltearcadena:
    push 0
    push cadena
    push cadena
    push 0
    call [MessageBoxA]
La unica gran diferencia entre masm y  fasm, es como manejan las importaciones.
en masm, normalmente tenes :
CALL <JMP.&KERNEL32.GetModuleHandleA>
mientras que en fasm
CALL [<&kernel32.GetModuleHandleA>]

masm ahora 1 byte por cada llamada. Aunque en fasm se puede hacer de cualquiera de las dos maneras.


MCKSys Argentina

Cita de: _Enko en 17 Agosto 2011, 19:54 PM
Ni fasm ni masm compilan  :silbar: Ensamblan.

Buehhh... ensamblan. A buen entendedor, pocas palabras..  ;D

Saludos!
MCKSys Argentina

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


_Enko

Luego pasado unos dias,  si se aburren de intentarlo, creo que podria postear un serial valido asi les facilita el analisis. Pero claro, me tendrian que pagar primero u$d 39.99 , que es lo que vale el registro del programa.  ;-)

Flamer

no puedo entrar al call todavía nose cuales son las 2 y 3 condiciones
estoy biendo el call de la linea 004024A0 aber que encuentro sobre el ida aber que lo boy a buscar

MCKSys Argentina

#37
Clave desencriptadora: 1B1C1D1F00402BAD00402DB411FFFFFF

Esta clave es la que se le pasa a la funcion que se encarga de descifrar el codigo (402CF1)

Los primeros 8 bytes (1B1C1D1F) los da el proggie (resultado que hay que obtener en EAX luego del CALL a 4028AF)
Los 8 bytes siguientes (00402BAD) son el resultado a obtener en la misma funcion anterior (2do check)
Los 8 bytes siguientes (00402DB4) son el resultado a obtener en la misma funcion (3er check)
Los ultimos 8 bytes (11FFFFFF) son el resultado a obtener en la misma funcion (4to check)

Todo esto sale gracias al analisis criptografico.

Como dije antes, ahora solo es cuestion de reversear la funcion 4028AF (o bruteforcearla) para que de los resultados expuestos (en base al serial de reg.txt).

Saludos!

PD: Las direcciones estan tomadas del EXE corregido.  :)

PD2: Ah!! El mensaje que sale es: CONGRATULATIONS!!! YOU COMPLETED THE CRACKME NOW WRITE A TUTORIAL  ;)
MCKSys Argentina

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


_Enko

#38
Jeje, muy buen trabajo. Felicitaciones !!!! ;-)
No me esperaba menos de vos ^^


Para hacer un keygen hay una cosa mas que nadie ha notado creo.... hay un crc32 del programa  para la primera semilla de los numeros aleatorios ^^


Sabiendo la clave puedes llamar a la funcion desencryptadora y la funcion del registro del programa ni bien se abre.. hay que inyectar un poco de codigo pero se puede hacer. :laugh:


PD: estaria bueno que explicaras como hiciste para obtener el 2do, 3er y 4to check.

Flamer

MCKSys
Argentina como lo lograstes esplicalo por que yo quede en 0
si puedes has un tutorial y te felisito
saludos ;-)