Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: class_OpenGL en 23 Diciembre 2015, 01:55 am



Título: (Consulta - Windows) ¿En que anillo está el buffer manejado por stdout?
Publicado por: class_OpenGL en 23 Diciembre 2015, 01:55 am
Hola, muy buenas. La duda es ¿dónde está el buffer de stdout? Por ejemplo, cuando llamamos a la función printf, lo que hacemos es copiar el buffer del parámetro de dicha función a otro buffer manejado por Windows. Entonces, ¿qué nivel de protección tiene?

Por si alguien anda despitadillo, me refiero a los anillos del modo protegido de los procesadores. He escuchado que suelen haber 4. El kernel se encuentra en el nivel 0, y las aplicaciones de usuario en el 3.

Lo pregunto por saber si puedo acceder a ese buffer directamente o está en el kernel, y por tanto solo se puede acceder a el por Windows y su API (o las librerías standard de los compiladores, aunque estas a su vez requieren a la API).

Gracias


Título: Re: (Consulta - Windows) ¿En que anillo está el buffer manejado por stdout?
Publicado por: fary en 23 Diciembre 2015, 09:53 am
Hola,

Creo que no existe dicho buffer...  De todas maneras tienes las interrupciones para imprimir texto por consola pero te limitarias, ya que tu aplicación tendría que ser para 16 bits.

Puedes probar a ver si la API que imprime texto llama a alguna otra API de la NTDLL (segurisimo que si que llama a alguna).

Saludos.


Título: Re: (Consulta - Windows) ¿En que anillo está el buffer manejado por stdout?
Publicado por: class_OpenGL en 23 Diciembre 2015, 13:30 pm
De acuerdo. A ver si existe :D


Título: Re: (Consulta - Windows) ¿En que anillo está el buffer manejado por stdout?
Publicado por: Arkangel_0x7C5 en 29 Diciembre 2015, 12:53 pm
depende de la funcion, por ejemplo yo supongo que printf usa un bufer para crear la cadena final que luego se imprime y no se si puts usa uno o no. pero estos bufers estan a nivel de la libc. si tu llamas a writeConsole o a WriteFile no creo que haya buffer y si lo hay ese si esta dentro de el kernel ya que estas funciones se ejecutan en su mayor parte en el nucleo
Recuerda que la entrada y salida estandar son manejados como ficheros

Saludos