elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Escurridizo código
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Escurridizo código  (Leído 3,973 veces)
BossGoedel

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Escurridizo código
« en: 14 Febrero 2010, 00:49 am »

Hola. Soy primerizo y me ha surgido un problema. A ver si me podéis echar una mano.

En un determinado programa (ejecutable PE), estoy intentando llegar al cófido que valida una key. Usando el IDA pro fee, y después de poner breakpoints a los messabox y getitemdialog para ver si cazaba el punto donde se lee y comprueba el serial, no obtuve ningún resultado. Entonces opté por pegarme la currada y poner breakpoints en todos y cada uno de los bloques de código. Pero no ha habido forma, cuando navego justo por los controles donde se introduce el serial y se da al ok, no salta ni un solo break.

He usado el Olly para hacer un Atach justo cuando estoy en la pantalla del serial, y también justo cuando le doy al botón...pero el debugueador se coloca en el ntdll y de ahí ya no se puede ir a ningún sitio.  :-[

¿Alguna idea de a lo que me enfrento?  :P
En línea

tena


Desconectado Desconectado

Mensajes: 668



Ver Perfil
Re: Escurridizo código
« Respuesta #1 en: 14 Febrero 2010, 01:45 am »

* Carga el exe en el olly
* Luego das run para ejecutarlo
* Te vas a la ventana de registro, pones cualquier cosa.
* Volves al olly, presiona F12 para pausarlo, luego Alt+F9
* Regresas al programa y aceptas la ventana
* El oly se detiene justo despues de la llamada a la ventana de "serial invalido".

y luego buscas por ahi...

slds
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.473


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Escurridizo código
« Respuesta #2 en: 14 Febrero 2010, 02:22 am »

Ahora, ¿estás seguro de que usa GetDlgItemTextA ?

¿ Probaste con GetWindowTextA ?

Si el ejecutable es un VC2008, usa las API terminadas con W (osea GetDlgItemTextW, GetWindowTextW)

¿ Has hecho el tutorial de Ricardo Narvaja ? (http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/)

Ahi aprenderás métodos para poner BPs rápidamente, asi también, como para navergar por el código del EXE sin problemas.

Saludos!
En línea

MCKSys Argentina

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

BossGoedel

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Escurridizo código
« Respuesta #3 en: 14 Febrero 2010, 12:22 pm »

Gracias a los dos por vuestras respuestas.

Tena: Gracias por la descripción. Cuando procedo así, y después de indicarle con Alt f9 que ejecute hasta regresar al user code, no regresa, puedo navegar tranquilamente por la pantalla de verificación del serial del programa y el olly no detecta nada.
AL hacer el pause, el debugger se queda en una instrucción del ntdll; pego parte del código por donde ha pasado antes de quedarse en la última instrucción:
[...]
7C91E4F9    54              push esp
7C91E4FA    E8 29000000     call ntdll.RtlRaiseException
7C91E4FF    8B0424          mov eax,ss:[esp]
7C91E502    8BE5            mov esp,ebp
7C91E504    5D              pop ebp
7C91E505    C3              retn
7C91E506    8DA424 00000000 lea esp,ss:[esp]
7C91E50D    8D49 00         lea ecx,ds:[ecx]
7C91E510 >  8BD4            mov edx,esp
7C91E512    0F34            sysenter
7C91E514 >  C3              retn

ME tiene mosqueado ese Systender. Creo que debe de lanzar más de un thread que paraliza la acción del debugger...pero esto ya sobrepasa mis conocimientos.

MCKSys: Gracias, MCKSys, efectivamente lo que usa es el GetDLgItemTextW, pero lo hace en infinidad de sitios y no para en ninguno...tal vez por que use pantallas construidas en código, tal vez por que el depurardor no llega por algún método de seguridad, que por cierto, no parece comercial.
No he hecho el tutorial de Ricardo, pero me temo que tendré que hacerlo.

Si tenéis alguna idea o rerecencia donde pueda leer como abordar el tema cuando parece que hay más de un thread en juego os lo agradecería mucho.

Un saludo y gracias
En línea

tena


Desconectado Desconectado

Mensajes: 668



Ver Perfil
Re: Escurridizo código
« Respuesta #4 en: 14 Febrero 2010, 14:28 pm »

Configura las Excepciones para el rango 00000000-FFFFFFFF

* Dale run para que se ejecute el programa, te vas a la ventana
de registro y metes cualquier numero de serial ("no aceptes aun");

Pone un BP CONDITIONAL en TranslateMessage y configuralo para
que pare con la condicion MSG==202

* Volves al programa y aceptas, oly debe caer en la api,
ahora ALT+F9 para volver al codigo, y desde ahi empiezas a buscar el serial
o lo que sea...

slds
En línea

BossGoedel

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Escurridizo código
« Respuesta #5 en: 16 Febrero 2010, 09:53 am »

Configura las Excepciones para el rango 00000000-FFFFFFFF

* Dale run para que se ejecute el programa, te vas a la ventana
de registro y metes cualquier numero de serial ("no aceptes aun");

Pone un BP CONDITIONAL en TranslateMessage y configuralo para
que pare con la condicion MSG==202

* Volves al programa y aceptas, oly debe caer en la api,
ahora ALT+F9 para volver al codigo, y desde ahi empiezas a buscar el serial
o lo que sea...

slds


Gracias Tena. Algo debo de hacer mal, por  que nada cambia.
Veo que en Debug options, en Exceptions, está configurado como tú dices.
Después arranco, pongo el serial y no hago nada más.
En el command del olly pongo BP TranslateMessage MSG==202 y le doy a enter.
Le doy al botón ok del programa y el olly se queda donde siempre; la opción de alt-f9 está deshabilitado en ese momento...perece que no ha encontrado donde pararse..es como si el debugger se parara antes...  :P
En línea

tena


Desconectado Desconectado

Mensajes: 668



Ver Perfil
Re: Escurridizo código
« Respuesta #6 en: 16 Febrero 2010, 15:53 pm »

perdon es un bp conditional log, ponele en las opciones que el ollydbg se detenga cuando se cumpla la condicion que pusiste.

slds
En línea

BossGoedel

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Escurridizo código
« Respuesta #7 en: 16 Febrero 2010, 19:24 pm »

perdon es un bp conditional log, ponele en las opciones que el ollydbg se detenga cuando se cumpla la condicion que pusiste.

slds

Ok. Así lo he hecho, Tena, gracias, se lo he puesto a todos los translatemessage...pero el olly no para en ningún sitio distinto al de siempre; se queda tieso en la misma linea como siempre. Supongo que me resta estudiar la pantalla de Log a ver que dice al respecto ¿no?
Me temo que debe de haber un hilo por ahí haciendo de las suyas...pero eso ya me supera. Creo que el hecho de que en ntdll se pare después de pasar por systender, significa que llama a kifastsystemcall...y ahí está NTCreateThread...Si alguno sabe algo de este tema o conoce literatura al respecto...

Gracias por tu interés tena   :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines