Título: [Reto] Dioniso's Crackme Publicado por: PeterPunk77 en 23 Noviembre 2011, 01:47 am Buenas caballeros,
he creado un pequeño crackme para que se entretengan durante un ratillo. Está programado en MASM32 y no tiene trucos antidebugger. La misión, como de costumbre, es crear el keygen. Como creo que es muy sencillo inténtenlo sin programar un bruteforce. link 1 -> http://www.megaupload.com/?d=GZEJ07G4 link 2 -> http://www.2shared.com/file/SUSxd8Ua/Dionisos_Crackme.html Saludos. PeterPunk Título: Re: [Reto] Dioniso's Crackme Publicado por: Flamer en 23 Noviembre 2011, 02:46 am Ya esta descargado dame tiempo para resoverlos boy adejar un lado el de mcsys argentina y prosigo con el tuyo
ya que le quiero hacer tutorial al de fly pero ba atener que esperar saludos flamer Título: Re: [Reto] Dioniso's Crackme Publicado por: Flamer en 23 Noviembre 2011, 06:27 am Oye dame tiempo para enviarte el crackme tu yo que resolvi ase tiempo con keygen incluido por privado
saludos :D Título: Re: [Reto] Dioniso's Crackme Publicado por: Flamer en 23 Noviembre 2011, 06:29 am Oye dame tiempo para enviarte el crackme tu yo que resolvi ase tiempo con keygen incluido por privado
saludos :D Título: Re: [Reto] Dioniso's Crackme Publicado por: .:UND3R:. en 23 Noviembre 2011, 06:51 am Hola, he estado viéndolo, poseo la estructura del serial. Pero me surge los siguientes problemas:
El serial introducido es el encargado de des-ofuscar o des-cifrar una función que empieza en 004012D3 que seguramente muestra algún mensaje de que el serial es correcto, pero las funciones son irreversibles, por lo menos para mí ya que pasa por: 004011ED y se sobre escribe un tamaño de 4F luego viene la siguiente función que comienza en 0040127C, esta se encarga de tomar los 4F valores, realiza una fórmula con ellos,el resultado es comparado con el valor correcto que debería si se cumple salta al lugar descifrado, pero si reverseamos hablamos de que hay que reversear 4F valores que están incorrectos, una vez hecho eso se debe adaptar al loop que comienza 004011ED para que escriba los 4F valores descubiertos, aquí mi duda puede ser con fuerza bruta?, existe otra forma a la que comenté? Saludos Título: Re: [Reto] Dioniso's Crackme Publicado por: PeterPunk77 en 23 Noviembre 2011, 14:12 pm @.:UND3R:. , puedes hacer esa parte con fuerza bruta si quieres. De todas formas creo que se puede resolver sin necesidad de ella, con un poco de estudio.
Saludos. Título: Re: [Reto] Dioniso's Crackme Publicado por: .:UND3R:. en 29 Noviembre 2011, 17:14 pm Nunca logré reversearlo, me gustaría si pudieras tomarte la molestia de explicarme como se puede reversear te lo agradecería:
ID:UND3R PASS:YXYY<YWWY=XXWY>YXZW Screenshhot: (http://www.imagengratis.org/images/crackik5ki.jpg) Solo logré realizarlo por fuerza bruta: Iniciamos el Dioniso's fuerza bruta Colocamos un ID y Generar 0040110E . 6A 64 PUSH 64 ; /Count = 64 (100.) 00401110 . 68 55394000 PUSH Dioniso'.00403955 ; |Buffer = Dioniso'.00403955 00401115 . 68 B90B0000 PUSH 0BB9 ; |ControlID = BB9 (3001.) 0040111A . FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hWnd 0040111D . E8 0C020000 CALL <JMP.&user32.GetDlgItemTextA> ; \GetDlgItemTextA 00401122 .- E9 D93E0000 JMP Dioniso'.00405000 *Ahí salta a llenar el serial con: WWWW<WWWW=WWWW>WWWW 00401218 . E8 92000000 CALL Dioniso'.004012AF 0040121D . 85C0 TEST EAX,EAX 0040121F . 74 0A JE SHORT Dioniso'.0040122B 00401221 . FF75 08 PUSH DWORD PTR SS:[EBP+8] *COLOCAR BP 00401224 . E8 AA000000 CALL Dioniso'.004012D3 00401229 . EB 14 JMP SHORT Dioniso'.0040123F 0040122B > E9 2A010000 JMP Dioniso'.0040135A ; Default case of switch 00401184 * Injerto que se dirige a la función de fuerza bruta En resumen debemos iniciarlo colocar un ID, colocar un BP en 00401221 y luego presionar generar. En cuanto al tiempo, se demoró 2 días APROX, por lo que no es para nada eficiente, pero si el objetivo es romper con la seguridad del software, entendiendo de alguna u otra forma la estructura del serial y cual es el lugar de comprobación se puede conseguir De todas formas se podría parchear se modifica el siguiente código y se borra cuando se escribe en la función de serial incorrecto y se agrega lo siguiente: Código: B8 01 00 00 00 EB 02 33 C0 C3 55 8B EC EB 32 45 6E 68 6F 72 61 62 75 65 6E 61 20 63 72 61 63 6B Descargar Brute-Force: http://www.mediafire.com/?tl5gzryr5u0q1a4 (http://www.mediafire.com/?tl5gzryr5u0q1a4) Si tengo más tiempo seguiré revisándolo, Saludos Título: Re: [Reto] Dioniso's Crackme Publicado por: PeterPunk77 en 30 Noviembre 2011, 21:40 pm Buenas .:UND3R:.,
la verdad es que no se qué quieres que te explique. La primera parte del crackme es obvia: con el crc32 del nombre y el serial introducido (en base 4) hago un xor y el resultado es un dword que es el usado para descifrar el procedimiento que muestra el mensaje de chico bueno. Así que lo único que necesitamos hacer es encontrar esta dword. Una forma de hacerlo es encontrarla por fuerza bruta, por ejemplo con este código: Código: .386 De todos modos yo no lo haría así, y aunque creo que el código de arriba no tardará ni media hora en encontrar la palabra mágica, seguramente la intentaría intuir: Estudiando el resto del programa suponemos que las tres primeras instrucciones serán: Código: 004012D3 /$ 55 PUSH EBP Y es que sí, el procedimiento empieza con "Push EBP y Mov EBP, ESP". ¿Por qué? Porque cuando programé el código quería que fuese solucionable sin fuerza bruta y el compilador MASM cuando llamo a un procedimiento al que le envío parámetros comienza con esas instrucciones para controlar la pila. Así que le envío un parámetro del que realmente podría prescindir pero necesario para poder solucionarlo sin fuerza bruta, ya que, además de empezar con esas instrucciones, acabará con Código: 0040131E |. C9 LEAVE Bueno, tendríamos que fijarnos que hay un RETN 4, porque precisamente sólo le envié un parámetro dword al procedimiento. Si vemos el regreso del procedimiento que calcula el CRC32 vemos que acaba con un RETN 8 porque se le envían 2 parámetros (inicio de memoria y longitud). 0xC9C20400 xor 091301BA = 0xC0D105BA que está desordenado porque tenemos 79 bytes a cifrar/descifrar, así que 79 mod 4 = 3. Corremos los tres bytes y obtenemos el dword bueno. @.:UND3R:. si no es esto lo que querías que te explicase por favor vuelve a preguntarme. Saludos. Título: Re: [Reto] Dioniso's Crackme Publicado por: .:UND3R:. en 1 Diciembre 2011, 00:06 am Era tal cual lo que necesitaba saber, muchísimas gracias en cuanto a CRC32 desconocía pasar de manera manual un CRC32 y ahora me doy cuenta lo cuanto se aprende con crackmes aprendí de manera manual el trabajo de un CRC32 y como poder solucionarlo ;-)
Muchísimas gracias, sinceramente estaba complicado para mi, Saludos y gracias por tomarte el tiempo de responderme |