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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con %i
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con %i  (Leído 2,907 veces)
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Duda con %i
« en: 2 Septiembre 2010, 11:22 am »

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. printf("%i");
  5. return 0;
  6. }

En pantalla se imprime siempre el mismo numero al menos a mi..

Porque sale ese..supongo que será algo de la memoria, pero prefiero aclarar esa pequeña curiosidad.


En línea


Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Duda con %i
« Respuesta #1 en: 2 Septiembre 2010, 11:36 am »

Ese codigo es erroneo, la funcion printf espera un parametro asi que accede a la pila a una direccion que no debe al no estar pasandoselo ... asumiendo que usas VC++:

Si compilaste en debug el valor sera el del registro ebp al comenzar la funcion (push ebp)

Si compilaste en release el valor sera la direccion a la que debe saltar la funcion al salir (call/ret)


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: Duda con %i
« Respuesta #2 en: 2 Septiembre 2010, 15:27 pm »

Ese codigo es erroneo, la funcion printf espera un parametro asi que accede a la pila a una direccion que no debe al no estar pasandoselo ... asumiendo que usas VC++:

Si compilaste en debug el valor sera el del registro ebp al comenzar la funcion (push ebp)

Si compilaste en release el valor sera la direccion a la que debe saltar la funcion al salir (call/ret)
Gracias era eso, lo unico que aunque sea erroneo como no ha de modificar la memoria solo imprime no hay riesgo aunque acceda a una pila equivocada
En línea


Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Duda con %i
« Respuesta #3 en: 2 Septiembre 2010, 17:19 pm »

Si que hay riesgo, es tal como dice EI. Acceder a una dirección invalida produce comportamiento indefinido, tales como corrupción de datos, errores en tiempo de ejecución, etc.

Por ejemplo:

Código
  1. printf("%s");


Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: Duda con %i
« Respuesta #4 en: 2 Septiembre 2010, 18:19 pm »

Eso sacaría una cadena de caracteres pero como falta el parametro, que saldría?

PD: No soy tan curioso como para probarlo sin más, luego lo pruebo en VirtualBox.
En línea


Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Duda con %i
« Respuesta #5 en: 2 Septiembre 2010, 18:27 pm »

Un error en tiempo de ejecución. Probalo tranquilo que no vas a romper nada  ;D.
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: Duda con %i
« Respuesta #6 en: 2 Septiembre 2010, 18:34 pm »

Salida:

UëÕâí  @
Process returned 0 (0x0)   execution time : 0.037 s
Press any key to continue.



En línea


Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Duda con %i
« Respuesta #7 en: 2 Septiembre 2010, 19:04 pm »

Ejecuta la aplicacion desde la carpeta del proyecto, y tendrás el error. Igualmente ni siquiera hace falta ver un error en tiempo de ejecución, ya el hecho que imprima caracteres aleatorios y acceda a posiciones de memoria invalidas implica que obviar los parámetros en printf es un error.

Saludos

 
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Duda con %i
« Respuesta #8 en: 3 Septiembre 2010, 11:46 am »

En un libro salia como corromper la memoria correctamente para hacer saltar a otra direccion el programa. El libro esta bastante bien para los que quieren aprender algo sobre el hacking de antes en el que no se usaban programas descargados de tal hacker. Buenos tiempos xD.
El libro te enseña a programar en C, con buenas clases de ensamblador a las que hay que estar muy atento, a usar los sockets, con su ejemplo de servidor escrito 100% a mano y legible xD, a programar shellcodes, buscar fallos y crearles los exploits necesarios, etc. Es el mejor libro de hacking que he leido nunca xD.
Se llama Hacking. Técnicas fundamentales, de Anaya.
Si quereis hacer algo en serio, teneis el espiritu y las ganas, miradlo muy bien, porque es increible.
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: Duda con %i
« Respuesta #9 en: 3 Septiembre 2010, 12:01 pm »

En un libro salia como corromper la memoria correctamente para hacer saltar a otra direccion el programa. El libro esta bastante bien para los que quieren aprender algo sobre el hacking de antes en el que no se usaban programas descargados de tal hacker. Buenos tiempos xD.
El libro te enseña a programar en C, con buenas clases de ensamblador a las que hay que estar muy atento, a usar los sockets, con su ejemplo de servidor escrito 100% a mano y legible xD, a programar shellcodes, buscar fallos y crearles los exploits necesarios, etc. Es el mejor libro de hacking que he leido nunca xD.
Se llama Hacking. Técnicas fundamentales, de Anaya.
Si quereis hacer algo en serio, teneis el espiritu y las ganas, miradlo muy bien, porque es increible.

Gracias por la recomendacion Sagrini
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda con UPS
Hardware
General Dmitry Vergadoski 0 1,870 Último mensaje 23 Octubre 2023, 22:38 pm
por General Dmitry Vergadoski
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines