Duda OllyDbg Narvaja

Iniciado por lubo, 29 Octubre 2013, 02:23 AM

0 Miembros y 1 Visitante están viendo este tema.

lubo

Buenos días :D.

Verán, me he metido de lleno con las cabeceras PE, el debugging y tal, en fin, el caso es que cuando debuggeo los ejecutables del tutorial de Narvaja, es un código muy breve y entendible.
Imagen de ejemplo: http://subefotos.com/ver/?6c38917b99e5e067be95a34afb2d8a55o.png

Y si yo ahora programo, por ejemplo, un HolaMundo en C y lo compilo con Microsoft Visual Studio C++, lo abro para debuggear y me aparece esto:
Imagen: http://subefotos.com/ver/?647bc4683ebdc7fd73287d2f04feb42co.png

Que no es absolutamente nada de lo que me he encontrado hasta ahora (sí, sé lo que significa ese main unicode, pero no consigo llegar al código ni nada, y no sé por qué no aparecía en los tutos de Narvaja, supongo que los exes estarán compilados en Win98 y con otro compilador)... Encima el código generado por Visual C++ está lleno de funciones como isDebuggerPresent(), y eso que le pongo que me compile como Release, no como Debug. Si pulso F9 no imprime Hola Mundo en el cmd, ya que me detecta que estoy usando un debugger.


Código en C compilado:
#include <stdio.h>

int main(int argc, char *argv[]) // Pongo un main "de toda la vida"
{
  printf("Hola Mundo\n");

  return 0;
}


Una ayudita, por favor, esto me interesa de verdad.

apuromafo CLS

la deteccion de isdebuggerpresent es solo entre 0 y 1, o un salto, sugiero sigas leyendo

respecto de la string, en algun lado está almacenado , de más que lo encuentras en search all reference string


bueno paso a paso, leyendo es como se aprende, te sugiero aprendas a usar ollydbg en xp sp3, si no tienes ese s.o. intenta en una máquina virtual...

un saludo Apuromafo

lubo

Cita de: apuromafo en 29 Octubre 2013, 02:28 AM
la deteccion de isdebuggerpresent es solo entre 0 y 1, o un salto, sugiero sigas leyendo

respecto de la string, en algun lado está almacenado , de más que lo encuentras en search all reference string


bueno paso a paso, leyendo es como se aprende, te sugiero aprendas a usar ollydbg en xp sp3, si no tienes ese s.o. intenta en una máquina virtual...

un saludo Apuromafo

Sé lo del return de isDebuggerPresent(), y uso WinXP x86 virtualizado.  Lo que preguntaba era por qué son tan diferentes los EXEs. Son tan fáciles en el tuto de Narvaja y los exes generados con MVC++ empiezan por ese main unicode, tienen protecciones antidebugger, etc. Y si hay algún tuto o algo para entender todo esto nuevo. ¿En el nuevo tuto de OllyDbg siguen siendo los códigos tan simples? Gracias :).

MCKSys Argentina

Cita de: lubo en 29 Octubre 2013, 02:46 AM
Lo que preguntaba era por qué son tan diferentes los EXEs. Son tan fáciles en el tuto de Narvaja y los exes generados con MVC++ empiezan por ese main unicode, tienen protecciones antidebugger, etc. Y si hay algún tuto o algo para entender todo esto nuevo. ¿En el nuevo tuto de OllyDbg siguen siendo los códigos tan simples?

La primer imagen que colocaste corresponde a un ejecutable hecho en ASM. El ejecutable tiene sólo lo básico y por ende, es muy sencillo y simple.

Por otro lado, están tratando de ver algo parecido usando un compilador moderno, el cual tiene 200.000 cosas nuevas. Por ejemplo: proteccion contra buffer overflows.

La guia de ricardo trata lo basico. Lo minimo y necesario para que empieces a depurar los programas por ti mismo.

Tee recomiendo que analices tu exe y veas qué es cada parte. Los sectores de meemoria en los que están las cosas. Eso es 100 veces mejor que cualquier tutorial.

Saludos!
MCKSys Argentina

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


lubo

Cita de: MCKSys Argentina en 29 Octubre 2013, 05:34 AM
La primer imagen que colocaste corresponde a un ejecutable hecho en ASM. El ejecutable tiene sólo lo básico y por ende, es muy sencillo y simple.

Por otro lado, están tratando de ver algo parecido usando un compilador moderno, el cual tiene 200.000 cosas nuevas. Por ejemplo: proteccion contra buffer overflows.

La guia de ricardo trata lo basico. Lo minimo y necesario para que empieces a depurar los programas por ti mismo.

Tee recomiendo que analices tu exe y veas qué es cada parte. Los sectores de meemoria en los que están las cosas. Eso es 100 veces mejor que cualquier tutorial.

Saludos!

¡Vaya! Qué lástima, aunque de todas formas tengo entendido que esas protecciones se pueden saltar con una buena shellcode. Yendo al grano, y una vez aclarada mi pregunta, tengo dos dudas. Yo estoy siguiendo el viejo tutorial de Narvaja, ¿me recomendáis terminarlo y empezar el nuevo, o abandonarlo y empezar el nuevo?

¿Si compilo Asm con VC++ también me añadirá mil protecciones al exe?
Ejemplo:
Código (asm) [Seleccionar]
__asm
{
  ; ... cargar gets()
  ; etc
  push 0
  ret
}


Eso es todo, muchas gracias.

MCKSys Argentina

Cita de: lubo en 29 Octubre 2013, 09:18 AM
Yo estoy siguiendo el viejo tutorial de Narvaja, ¿me recomendáis terminarlo y empezar el nuevo, o abandonarlo y empezar el nuevo?

Creo que lo recomendable es hacer el nuevo, pero es decisión tuya.

Cita de: lubo en 29 Octubre 2013, 09:18 AM
¿Si compilo Asm con VC++ también me añadirá mil protecciones al exe?
Ejemplo:
Código (asm) [Seleccionar]
__asm
{
  ; ... cargar gets()
  ; etc
  push 0
  ret
}


En este caso no estoy seguro, pues no sé si puedes configurar el VC++ para que genere ejecutables mínimos como uno hecho en ASM.

Como opción, te sugiero bajarte el paquete MASM e instalarte un IDE. Por ejemplo, yo uso WinAsm, pero hay muchos otros.

Saludos!
MCKSys Argentina

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


lubo

Pues yo uso el SDK MASM32, pero WinAsm tiene buena pinta, ya que qeditr.exe (MASM32) no colorea el texto. ¿Puedo usar los mismos .inc y todo igual que en MASM32, ¿no?

MCKSys Argentina

MCKSys Argentina

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