Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: someRandomCode en 15 Noviembre 2014, 17:54 pm



Título: [RESUELTO] Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 15 Noviembre 2014, 17:54 pm
Hola, muchachos..
Bueno, que mas decir, cuento lo que he hecho.
Cargo el binario, busco las llamadas intermodulares, encuentro que llama a __vbaStrCmp, asique sigo la llamada.
Encuentro lo siguiente:
72A29596  /$  FF7424 08     PUSH DWORD PTR SS:[ARG.2]                ; /Arg3 = crackit2.4027A4
72A2959A  |.  FF7424 08     PUSH DWORD PTR SS:[ARG.1]                ; |Arg2 => [ARG.1]
72A2959E  |.  6A 00         PUSH 0                                   ; |Arg1 = 0
72A295A0  |.  E8 44E6FFFF   CALL __vbaStrComp                        ; \MSVBVM60.__vbaStrComp

Cuando busco en memoria el string que yo entre (prueba) no lo encuentro por ningun lado..
Todas y cada una de esas lineas tienen un breakpoint y en todas y cada una de las lineas lo he buscado.

El desafio se llama "Smartcheck rulez" y es obvio que con Smartcheck seria mas facil (ya de por si te dice que valores se le esta pasando) pero me da por hacerlo solo con Ollydbg, si Smartcheck puede, Olly tambien (supongo, no me peguen muy fuerte que estoy volviendo de a poquito a esto de la ingenieria reversa de codigo ajeno).

La verdad sea dicha, no lei del todo las reglas de la sección, por favor si el thread no esta permitido (nota que no pido la solucion, solo apuntadores) por favor, borrar directamente y avisarme por PM..

O sea, esta pasando los valores como si fuera:
__vbaStrCmp(SS:[ARG.2],SS:[ARG.1],0)
Que seria lo mismo que decir en Visual Basic StrComp(arg2,arg1,CompareMethod.Text); verdad?

Alguien me podria aclarar la mente, por favor? xD


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: MCKSys Argentina en 15 Noviembre 2014, 18:09 pm
Hola!

Las variables que se le pasan a esa función, son las que usa VB internamnete (son tipo variant).
Para ver el string, si miras la direccion donde esta la variable, verás que el primer DWORD tiene el valor 8 (que identifica al tipo de datos sttring).
El 3er DWORD apunta al string.  ;)

Saludos!


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 15 Noviembre 2014, 18:11 pm
Eh ahi el tema, que no ubico como mirarlo >.<
Guia please please :)


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: MCKSys Argentina en 15 Noviembre 2014, 18:17 pm
Eh ahi el tema, que no ubico como mirarlo >.<
Guia please please :)

Parado sobre la llamada a la "API", haces un "follow in dump" de los parametros en la ventana del stack. En la ventana de dump, haces "follow dword in dump" y el string aparecerá.

Saludos!


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 15 Noviembre 2014, 18:22 pm
Debo de estar haciendo algo mal en el hex dump cuando hago eso caigo en una zona que no tiene cargado nada de nada (00 00 00 00.....00)

Lo que hago es pararme sobre la linea que hace el CALL MSVBVM60.__vbaStrComp, click derecho Follow (tambien esta Follow in dump, pero me tira dos opciones, inmediato y constante, uno me lleva a una zona de memoria que dice "Actualizaciones de Windows" (??) y el otro al ya mencionado sitio vacio cuando les doy en follow dword)

Sera mejor que me vuelva al otro Ollydbg? Queria probar la version nueva con tantas ganas, pero la falta de colores por ejemplo me complica la lectura


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: MCKSys Argentina en 15 Noviembre 2014, 18:29 pm
Debo de estar haciendo algo mal en el hex dump cuando hago eso caigo en una zona que no tiene cargado nada de nada (00 00 00 00.....00)

Lo que hago es pararme sobre la linea que hace el CALL MSVBVM60.__vbaStrComp, click derecho Follow (tambien esta Follow in dump, pero me tira dos opciones, inmediato y constante, uno me lleva a una zona de memoria que dice "Actualizaciones de Windows" (??) y el otro al ya mencionado sitio vacio cuando les doy en follow dword)

Sera mejor que me vuelva al otro Ollydbg? Queria probar la version nueva con tantas ganas, pero la falta de colores por ejemplo me complica la lectura

Bueno, no te enojes pero necesitas aprender a usar Ollydbg. (Quizás hacer el curso de ricnar??)

En la ventana de CPU, paras en el CALL a la función. En la ventana de stack haces el "follow in Dump". En la ventana de Dump, hace el "follow Dword in dump" del 3er DWORD.

El resaltado de sintaxis de Olly se configura.

Saludos!


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 15 Noviembre 2014, 18:39 pm
Bueno, no te enojes pero necesitas aprender a usar Ollydbg. (Quizás hacer el curso de ricnar??)

En la ventana de CPU, paras en el CALL a la función. En la ventana de stack haces el "follow in Dump". En la ventana de Dump, hace el "follow Dword in dump" del 3er DWORD.

El resaltado de sintaxis de Olly se configura.

Saludos!

No me enojo para nada che, tenes toda la razon del mundo ^_^
Ahora me voy a poner con el tuto de ricnar.. Voy a intentar 10 minutos mas asi y al tuto independientemente de lo que pase..

Si, directamente me voy al curso, habia hecho un delay a ver si encontraba a que te referias pero me atore de nuevo..

Me pare tanto sobre ESP, como EBP, les di click en "follow in dump", despues donde aparecio le di click en "follow dword in dump" pero ninguno de los dos muestra el texto de prueba, sino caracteres unicode :(


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: MCKSys Argentina en 15 Noviembre 2014, 18:41 pm
pero ninguno de los dos muestra el texto de prueba, sino caracteres unicode :(

VB usa widechar (UNICODE) internamente.


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 15 Noviembre 2014, 19:08 pm
VB usa widechar (UNICODE) internamente.

Genial, pero pasandolos de UNICODE a ASCII con distintos conversores (dos de los que probe en linea son ek de RapidMonkey y el de ThePcManSite) me dan cosas que nada que ver.. ninguno de los dos valores me da parecido a 'prueba'.. :(

En si, me voy a poner a leer primero y cuando le encuetre un poco mas la vuelta posteo de nuevo, todos los comentarios son bienvenidos en el entre tiempo salvo que sean bardo :) jaja


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: tincopasan en 15 Noviembre 2014, 22:32 pm
supongo que es un crackme, ¿lo pódes subir?


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 15 Noviembre 2014, 22:43 pm
supongo que es un crackme, ¿lo pódes subir?

Lo podes descargar del sitio de net-force.nl, aca dejo el enlace:
http://net-force.nl/challenge/level502/crackit2.zip

Hasta ahora hice progreso, tenes que tener una cierta cantidad de caracteres de clave para que te haga la comparacion, y despues hace comparacion letra a letra.. Tengo las primeras 4, es mucha pista si digo cuantas son? :)


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: MCKSys Argentina en 15 Noviembre 2014, 23:29 pm
El crackme es muy simple. No deberías tener inconvenientes en resolverlo pues es muy directo:

- Verifica el largo del serial ingresado con uno establecido.
- Convierte algunos caracteres del serial en un string que representa su valor ANSI en decimal. Otros los convierte en string directamente.
- Compara cada string con uno establecido. Si coinciden todos, listo...

Saludos!

Tip: click (http://es.wikipedia.org/wiki/ECHELON)  ;D


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 15 Noviembre 2014, 23:35 pm
A mi donde me esta trabando es aca:
Código:
00402748  |.  50            PUSH EAX
00402749  |.  68 D01C4000   PUSH 00401CD0  // como paso esto? semejante valor que expresa?
0040274E  |.  FFD7          CALL EDI // llama a vbStrCmp
00402750  |.  85C0          TEST EAX,EAX

PD: Habia arrancado mal mal al principio jeje


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: MCKSys Argentina en 15 Noviembre 2014, 23:43 pm
Por cierto, si es por crackearlo, creo que lo siguiente haria el trabajo:

Código
  1. 0040230C   /0F84 81040000                 JE crackit2.00402793

por

Código
  1. 0040230C   /E9 70040000                   JMP crackit2.00402781
  2. 00402311   |90                            NOP

y

Código
  1. 00402791   /EB 06                         JMP SHORT crackit2.00402799

por

Código
  1. 00402791    90                            NOP
  2. 00402792    90                            NOP


A mi donde me esta trabando es aca:
Código:
00402748  |.  50            PUSH EAX
00402749  |.  68 D01C4000   PUSH 00401CD0  // como paso esto? semejante valor que expresa?
0040274E  |.  FFD7          CALL EDI // llama a vbStrCmp
00402750  |.  85C0          TEST EAX,EAX

vbStrCmp recibe 2 strings widechar como parametros (a diferencia de StrComp, que recibe 2 strings variants). En realidad, es un wrapper de la segunda.

Como puse, algunos chars del serial ingresado se convierten, otros son tomados textualmente...

Saludos!


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: tincopasan en 16 Noviembre 2014, 00:11 am
como ya dijo MCKSys es bastante fácl, te recomiendo que comiences a seguirlo desde 004022e5 y un par de líneas más abajo verás la comparación del largo con 7 y puedes ver q va comparando desde alli, para parcharlo cambiaría solamente 4027a9 757b por 74 7b


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 16 Noviembre 2014, 14:19 pm
como ya dijo MCKSys es bastante fácl, te recomiendo que comiences a seguirlo desde 004022e5 y un par de líneas más abajo verás la comparación del largo con 7 y puedes ver q va comparando desde alli, para parcharlo cambiaría solamente 4027a9 757b por 74 7b

Jeje si la verdad que el cmp en 004022ED no lo habia visto.. lo hice a base de prueba y error el ver que si no tenias X caracteres no llegaba a cambiar el texto..

Necesito dos cosas, conocer mejor Ollydbg y practicar mucho >.<


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 29 Agosto 2015, 07:50 am
La verdad, sigo atorado...
Puede ser que use caracteres que no son latinos?
Porque despues de Ech no consigo lo que sigue en la clave..
La idea es obtener la clave que esta hardcodeada..


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: tincopasan en 30 Agosto 2015, 08:47 am
vaya, seguir un post después de tanto tiempo. Lo he vuelto a mirar porque me olvidé que era y tienes razón la clave es Ech♥l☺n, el problema está dado por la codificación usada, no se de donde sacaste el crackme pero seguramente es en sistema ingles y viejo ya que usa caracteres no imprimibles, que ya no se usan en programación.
♥ = alt +03 (se usaba como fin de línea)
☺= alt + 00(caracter nulo)


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 30 Agosto 2015, 08:50 am
Si jeje, es que despues de tantos meses no lo habia resuelto..
Amen que estuve con muchas cosas, y aun ahora estoy en Buenos Aires por temas medicos, pero bueno.. Ahora entiendo donde estaba mi problema..
Gracias!


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: MCKSys Argentina en 30 Agosto 2015, 10:44 am
vaya, seguir un post después de tanto tiempo. Lo he vuelto a mirar porque me olvidé que era y tienes razón la clave es Ech♥l☺n, el problema está dado por la codificación usada, no se de donde sacaste el crackme pero seguramente es en sistema ingles y viejo ya que usa caracteres no imprimibles, que ya no se usan en programación.
♥ = alt +03 (se usaba como fin de línea)
☺= alt + 00(caracter nulo)

Bueno, en realidad no es así:

El serial correcto es:
Código:
Ech3l0n

Pruébenlo: ingresen el serial y pongan un BP en 00402712; pulsen el botón y, si tracean con F8, verán los chars contra los que se compara: Ech3l0n  :P
Los 3 primeros contra su valor ANSI, luego el "3" contra un "3" ( :P), la "l" contra su valor ANSI, el "0" contra otro "0" y la "n" fnal contra su valor ANSI.

Saludos!

PD: Como te dije al principio, el crackme es muy sencillo. Sólo debes tomarte el tiempo (que sea necesario) para analizar lo que hace la rutina de chequeo. Es la forma de aprender.  ;)


Título: Re: Regresando, me atoré (Ollydbg 2.01 + crackit2 de netforce.nl)
Publicado por: someRandomCode en 30 Agosto 2015, 12:24 pm
Ahora si me quedo claro del todo, gracias!
Ahi lo marco como resuelto...