Otro crackme.
Dificultad: [3/10] (Espero que asi sea jaja)
Lenguaje: FASM
Objetivo: Hacer un Keygen
Packer: No
[Crackme] Litrico (http://www.multiupload.nl/U0SFJTOVUL)
Espero que les guste. Para los mas desconfiados se que aqui tengo pocos mensajes, pero soy un usuario de fiar en otras comunidades. mr.blood (http://www.portalhacker.net/index.php?action=profile;u=243447)
Sa1uDoS
No entiendo mr.blood siempre me sale bien xD ¿Estás seguro de que es ese? porque si no menudo keygenme me espera :laugh:
Ok, luego lo subo, tuve alguna clase de problema jaja
En mi PC funcionaba perfecto pero mirando en otro me da siempre bien xD
Gracias por avisar avesudra.
Sa1uDoS
Tengo Windows 8 por si te sirve o funciona en torno a eso, porque al cerrar el olly aparece esto:
(http://img685.imageshack.us/img685/3594/crackeme.jpg)
Prueba ahora a ver, a mi ya me funciona. Gracias, me has servido de mucho.
Era que habia subido otro .exe
Sa1uDoS
Ya te mandé el keygen, está bastante sencillito :P. Lo que más me costó fue
hacer el keygen, malditos punteros en C >.<.
Ah, una curiosidad. No controlas los límites de escritura en el buffer de usuario ni contraseña, así que si metes de usuario por ejemplo:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABien
Puedes conseguir que te muestre bien con cualquier serial, bueno incluso donde pone Bien poner el mensaje que uno quiere que muestre xD.
Exploit FTW >:D
Aqui posteo el keygen???
ohh ya jeje ya lo mande igual
Los dos keygen estan bien. Como nota aixeiger me hubiera gustado ver el codigo ;). Y es un poco cutre que no sirva para users de mas de 4 caracteres ;).
Como pista os digo que tambien acepto self-keygen que en este crackme no lleva mucho tiempo.
Sa1uDoS
Pero es que solo puedes insertar 4 bytes de contraseña, por lo tanto solo comprueba 2 pares de bytes del user (4 carácteres). Igual me equivoco no sé.
¡Un saludo!
El problema ya lo ha dicho Høl¥: el proggie esta mal diseñado (perdón mr.blood pero es así) y tiene un buffer overflow, con el cual podremos sobreescribir la sección .data hasta llegar el texto del mensaje.
Mas alla de eso, el maximo largo que podria tener el username seria de 9 chars (sin contar el zero final). Si se excede de ese limite, se comienza a escribir en el buffer destinado para guardar el serial (o pass).
No sé ando un poco perdido, pues en este keygenMe el procedimiento es este:
primerWordUsuario;
segundoWordUsuario;
xor primerWordUsuario, segundoWordUsuario;
compara lo que queda en primerWordUsuario con primerWordKey
si no es igual salta a chico malo
Pero es que key solo tiene 4 bytes...
Cita de: MCKSys Argentina en 28 Enero 2013, 23:33 PM
El problema ya lo ha dicho Høl¥: el proggie esta mal diseñado (perdón mr.blood pero es así) y tiene un buffer overflow, con el cual podremos sobreescribir la sección .data hasta llegar el texto del mensaje.
Mas alla de eso, el maximo largo que podria tener el username seria de 9 chars (sin contar el zero final). Si se excede de ese limite, se comienza a escribir en el buffer destinado para guardar el serial (o pass).
Obviamente tiene un fallo gordo, no tiene limite de entrada de caracteres. Pero el objetivo era hacer un keygen por lo que ese fallo no sirve para nada.
@avesudra la contraseña no es igual para "tras" que para "trastras". El user admite hasta 10 caracteres (9+'\0'). Fijate bien y lo veras ;).
Sa1uDoS
P.D.: Siento no poder contestar antes, estuve liado y hasta ahora no pude usar mi PC.
Muchas gracias por compartir tu Keygenme, ¿me podrías decir en que dirección absoluta (VA) es en donde el programa imprime en consola que el serial es correcto?, ya que visualizando el keygenme, este presenta un algoritmo de validación (Keygen), pero aun cumpliendo con este algoritmo, el programa muestra el mensaje de "incorrecto", el algoritmo de validación es el siguiente:
Toma 2 bytes del usuario utilizando ECX como puntero, al principio este es cero por lo que toma los primeros dos bytes de nuestro usuario ya que ECX = 0:
UN
luego de esto mueve a AX el valor de los siguientes dos bytes:
D3
una vez obtenido 4 bytes, realiza un XOR de estos dos y los compara con dos bytes de nuestro serial introducido.
Este mismo algoritmo se repite hasta que el número de caracteres de nuestro usuario - 2 sea mayor o igual a ECX (el cual se incrementa en 2 por cada vez que pasa por el ciclo):
Información adicional:
VA USER: 00402000
VA PASS: 40200A
00401051 |. 83EA 02 SUB EDX,2 //resta dos al número de serial
00401054 |> /66:8B1C0E /MOV BX,WORD PTR DS:[ESI+ECX] //toma dos valores y los deja en BX
00401058 |. 83C1 02 |ADD ECX,2 //suma a ECX 2
0040105B |. 66:8B040E |MOV AX,WORD PTR DS:[ESI+ECX] //toma dos siguientes valores y los deja en AX
0040105F |. 66:31D8 |XOR AX,BX //realiza un XOR de AX con BX
Edit:
Mi pass sería: 33167D11
Espero respuestas, saludos
Y no te muestra el mensaje de Bien cuando metes tu user y pass correctas?
Si te fijas bien hay un mov dword [mensaje], 0x6E656942 esos numeros son los ascii de Bien (B=0x42, i=0x69, e=0x65, n=0x6E) y la rutina pasa por ahi cuando el serial es correcto. Mi idea era despistar un poco a los nuevos, que vean que no siempre hay cadenas de texto :P.
Sa1uDoS
Más que despiste dudé de la funcionalidad del keygen por los comentarios (Stack Overflow), tan así que ni me animé a probar el serial, el cual me dio correcto.
Muchas gracias por el Keygenme
Tutorial:
http://www.sendspace.com/file/iul4xc
Creo qeu esta bien explicado :xD
un saludo!