Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Mad Antrax en 16 Enero 2013, 18:10 pm



Título: Crackme ¿Eres capaz de resolverlo?
Publicado por: Mad Antrax en 16 Enero 2013, 18:10 pm
Bueno, os dejo un pequeño crackme que he creado especialmente para el foro, opino que es muy sencillito, dificultad 2/10

(http://i.imgur.com/QOe3l.png)

Os dejo algo de información:

* Programado en VB6
* Está empaquetado
* He programado una rutina casera para evitar el debugg
* He programado un sistema casero para obfuscar las string's
* Hay código trampa escrito (trap-code)

Hay dos formas de solventar el crackme:

* Encontrar el serial correcto
* Parchear el ejecutable para que funcione con cualquier serial

Los 2 métodos son correctos, si puedes, intenta conseguir los 2 métodos :)

Utiliza éste hilo para preguntar dudas si estás atascado

DESCARGAR: http://www.mediafire.com/?ov4xqo4orqjr24e


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: karmany en 16 Enero 2013, 18:27 pm
De una persona como tú que domina el VB6 nos podemos esperar de todo. jeje

Gracias por tu trabajo,
un saludo  :)


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: Mad Antrax en 16 Enero 2013, 18:42 pm
De una persona como tú que domina el VB6 nos podemos esperar de todo. jeje

Gracias por tu trabajo,
un saludo  :)

Vas a intentar crackearlo? sería un honor. Ya aviso que es muy fácil (2/10) así que no creo que te cueste mucho.

Por otra parte, el tema de trainers y edición de ejecutables en tiempo de ejecución va en éste foro de ingeniería inversa? Ultimamente me he centrado en éste campo :P


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: MCKSys Argentina en 16 Enero 2013, 18:58 pm
Esta noche, si hago tiempo, lo bajo y lo miro a ver que tal...

Saludos!


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: apuromafo CLS en 16 Enero 2013, 19:50 pm
interesante crackme, actualmente estoy en un windows 7, pero puedo comentar

1)al usar olly 2, crea un chilld(ejecuta un segundo proceso) y termina el primero
, que se guarda realmente original en %tmp%, luego de copiar el temporal..realmente es el mismo exe que se ejecuta..por lo cual ahora tenemos el crackme original en temporales,

2) luego que esta el temporal dice estar empacado con mpress, al intentar desempacar... actualmente puedo decir que el oep es 401300, por otro lado..en la noche puede que revise si sale alguna string o donde parchar


saludos Cordiales Apuromafo

/edit

pues la primera compracion  que es similar a la palabra `5letras, sin incluir el ñ, refiere hacia la string similar a superado, digo similar, ahora bien aunque sean iguales no toma?..
string1: xzujwrfs
string2: xzujwtfs


luego hay otra comparacion con "aspiradora", pero tampco..el mensaje sera construido si o si con lo que se muestra en 00406040  

por lo cual podemos parchar para que diga lo que nosotros queramos
(aqui escribe ya en casi su totalidad en la direccion 406040)
004045D6   . 8BD0           MOV EDX,EAX
004045D8   . B9 40604000    MOV ECX,1300_.00406040
004045DD   . FFD6           CALL ESI

por ende  un parche posible que se me ocurre para:pues aqui:
http://www.mediafire.com/?7druzz3r4ryvyd3

y respecto a la carpeta lo guardare aqui
http://www.mediafire.com/?owx6s2l51ofu6


saludos Apuromafo


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: Pablo Videla en 16 Enero 2013, 20:07 pm
Hace tiempo que no te veo en el foro, yo usaba tus programas hace mas de 8 años XD


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: Mad Antrax en 16 Enero 2013, 20:39 pm
Hace tiempo que no te veo en el foro, yo usaba tus programas hace mas de 8 años XD

Estuve de vacaciones... vacaciones de 8 años xD

interesante crackme, actualmente estoy en un windows 7, pero puedo comentar

1)al usar olly 2, crea un chilld(ejecuta un segundo proceso) y termina el primero
, que se guarda realmente original en %tmp%, luego de copiar el temporal..realmente es el mismo exe que se ejecuta..por lo cual ahora tenemos el crackme original en temporales,

2) luego que esta el temporal dice estar empacado con mpress, al intentar desempacar... actualmente puedo decir que el oep es 401300, por otro lado..en la noche puede que revise si sale alguna string o donde parchar


saludos Cordiales Apuromafo

Muy buen trabajo de entrada, ahora solo te falta quitarle el pack y a empezar el debug, ya os aviso que es MUy sencillito. Ya iré subiendo el nivel si veo que éste lo resolvéis fácil...


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: apuromafo CLS en 16 Enero 2013, 20:51 pm
-


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: Mad Antrax en 16 Enero 2013, 21:18 pm
MUY BIEN!!!

Pero me entran algunas dudas... He mirado el ejecutable parcheado, si pongo el serial correcto o uno incorrecto, siempre me dice correcto. Normalmente cuando se parchea un crackme, todos los códigos funcionan excepto el código secreto (ya que cambiamos un JE -> JNE por ejemplo), así pues... como lo has hecho? xD Has forzado tu mismo que siempre salga la string the "correcto"?


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: apuromafo CLS en 16 Enero 2013, 21:37 pm
-


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: Mad Antrax en 16 Enero 2013, 21:45 pm
si, force la string de correcto :D lee lo anterior
(aqui escribe ya en casi su totalidad en la direccion 406040)

me quedo con "muy bien "  gracias por tu crackme

, si no es la solucion correcta, pues animo, todos miramos de diferente forma los crackmes

Bueno, te explico:

Lo que has hecho es cambiar el mensaje de incorrecto por correcto, eso podría parecer una buena forma, pero si miramos de forma más global, tu ejecutable parcheado jamás entra en la zona de código que muestra el mensaje correcto.

Si en lugar de mostrar un mensaje, el crackme tuviera que registrar el programa (escribir en el registro, generar un keyfile o lo que sea) jamás se ejecutaría, me explico? Sencillamente tu solución ejecuta la sección de código "malo", pero la string que muestra pone "correcto", así que, sintiéndolo mucho, no has superado el crackme :(

Has avanzado mucho, tienes el exe descomprimido, solo te falta debuggear un poco más :P


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: Karman en 17 Enero 2013, 00:38 am
Es la primera vez que crackeo un programa visual basic... y la verdad es una bost*** :P, me pierden esas funciones raras... de todas formas, (a pesar de nunca haber tocado un programa en VB) creo que encontré la solución... el punto a controlar es:

Citar
00403D12 CALL NEAR DWORD PTR DS:[40106C] ; msvbvm60.__vbaStrCmp

Si prueban con varios strings base va a ver que el algoritmo es muy simple... la clave es: batman (el autor entenderá :P)

S2

PD: Este es mi mensaje Nº 666 (coincidencia? :P)


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: MCKSys Argentina en 17 Enero 2013, 03:20 am
Bueno, lo he mirado y está divertido. Lo recomiendo para quienes se están iniciando, como práctica.

Por lo pronto, algunos datos:

1) Para desempacar el exe original, recordar lo básico sobres los EP de los EXEs hechos en VB5/6 (El runtime es la clave para llegar al OEP! (y para restaurarlo)).

2) Una vez desempacado el primero, basta con revisar un poco el código para ver que está sacando el segundo EXE de los recursos. (CUSTOM)

3) Por último, para desempacar el segundo EXE, es sencillo, y la técnica de PUSHAD-POPAD es suficiente (Por cierto, el packer usado es MPRESS: http://www.matcode.com/mpress.htm (http://www.matcode.com/mpress.htm))

Luego, basta con seguir el código. Para esto, nos podemos valer de VBDecompiler o mejor aún, usar los puntos magicos de VB (en el caso de VB6, hay que buscar F3A5FFD08BE55D8945FC8B45FC5F5EC9C20C00)

Por las dudas, como se dijo antes, se usa StrCmp para comparar el serial cifrado con el serial correcto (cifrado tambien).

La tecnica de encriptacion usada es caesar y se distribuye asi:

abcdefghijklmnopqrstuvwxyz
fghijklmnopqrstuvwxyz{|}01

Como es evidente, poniendo un BP en msvbvm60.__vbaStrCmp vamos a ver ambos strings y usando el alfabeto anterior sale la password, la cual es: un superhéroe con capa roja.

Como dije antes, está bueno para practicar.

Saludos!

PD: Por las dudas, si alguien lo quiere ver desde cero, dejo referencias sobre VB:

Disassembling Visual Basic Applications por Sanchit Karve
Visual Basic Image Internal Structure Format por Alex Ionescu
Visual Basic Reversed - A decompiling approach por AndreaGeddon
Teorías sobre VB de la web de Ricardo Narvaja (www.ricardonarvaja.info)
-Teoría 011-Olly y Visual Basic por COCO
-Teoría 012-Olly y Visual Basic 2 por COCO
-Teoría 061-Olly y Visual Basic 3 por COCO
-Teoría 190-Olly y Visual Basic 4 por COCO
-Teoría 235-Punto Magico VB6 por ARAPUMK
-Teoría 236-Punto MagicoII VB6 por ARAPUMK
-Teoría 242-OEP en VB por ARAPUMK


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: Mad Antrax en 17 Enero 2013, 08:27 am
Completamente correcto

VB6 tiene muchas debilidades para el tema de crackme's, los tipo serialme basta con buscar StrCmp ya que el 90% de casos se utilizará dicha función.

Bien jugado, ya como dije, era un crackme sencillito

Felicitaciones :D


Título: Re: Crackme ¿Eres capaz de resolverlo?
Publicado por: apuromafo CLS en 17 Enero 2013, 21:57 pm
bueno ya todo esta dicho el +5 es caesar ( el a es f por:  a+1=b  a+2=c a+3=d a+4=e a+5=f  )

string1: xzujwrfs

Citar
La tecnica de encriptacion usada es caesar y se distribuye asi:

abcdefghijklmnopqrstuvwxyz
fghijklmnopqrstuvwxyz{|}01


por lo cual es claro cual es el superheroe de la capa roja y traje debil a kriptonita



la primera vez escribi ese nombre, y luego intente parcharlo buscando no sep, el mensaje..no el algoritmo primero, pero lo que es interesante ver que no es facil parcharlo y que igual dira el mismo mensaje ;) , aunque no sea la mejor forma

posiblemente otra idea seria parcharlo a modo que siempre que ingresen un serial este sea la variable cifrada?, o bien que siempre ingrese el serial correcto..o  olvidarse de el caption y editar para que siempre este escrito la palabra..
no se, son varios caminos que se ocurren
saludos Apuromafo