Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: class_OpenGL en 22 Diciembre 2015, 08:06 am



Título: (Consulta) ¿Por qué Windows no usa interrupciones?
Publicado por: class_OpenGL en 22 Diciembre 2015, 08:06 am
Hola, muy buenas! La pregunta es bastante simple. ¿Por qué Windows no usa interrupciones para operaciones de bajo nivel? Por ejemplo, Los sistemas Unix usan su clásica interrupción 0x80 para, por ejemplo, operaciones de lectura o escritura. Sin embargo, para hacer operaciones de escritura o lectura en Windows, necesitas usar su API.

La duda se puede plantear de otra forma. ¿Tienen las interrupciones alguna desventaja clara frente al sistema que usa Windows? Gracias!


Título: Re: (Consulta) ¿Por qué Windows no usa interrupciones?
Publicado por: Eternal Idol en 22 Diciembre 2015, 10:04 am
Si las usa/ba, a bajo nivel en versiones/procesadores mas antiguos usan la interrupcion 0x2E, hoy en dia (creo que en Linux tambien) se usan instrucciones especificas como systenter/syscall para pasar a modo Kernel.

http://wiki.osdev.org/SYSENTER

No deberias llamar a esta interrupcion (en produccion) ya que los numeros de los servicios varian entre diferentes versiones de Windows, en la NTDLL.dll podes ver como se hace ese trabajo de enrutado.

Ejemplo:
ntdll!NtCreateFile:
mov r10,rcx
mov eax,052h ;numero de servicio
syscall
ret


Título: Re: (Consulta) ¿Por qué Windows no usa interrupciones?
Publicado por: class_OpenGL en 22 Diciembre 2015, 10:18 am
Interesante... Pero, ¿por qué no se siguen usando las interrupciones? ¿Por qué motivo se están sustituyendo por syscall o demás instrucciones? ¿Qué desventajas tienen?

Gracias por tu respuesta!


Título: Re: (Consulta) ¿Por qué Windows no usa interrupciones?
Publicado por: Eternal Idol en 22 Diciembre 2015, 10:26 am
Como te decia hay instrucciones modernas especificas, estas estan optimizadas para hacer el pasaje de modo Usuario a modo Kernel.

http://www.summitsoftconsulting.com/syscallopts.htm
http://wiki.osdev.org/SYSENTER


Título: Re: (Consulta) ¿Por qué Windows no usa interrupciones?
Publicado por: class_OpenGL en 22 Diciembre 2015, 14:09 pm
Muchas gracias. Me ha costado un poco xD (no es que sea complicado, es que me he comido el coco :P)


Título: Re: (Consulta) ¿Por qué Windows no usa interrupciones?
Publicado por: Eternal Idol en 22 Diciembre 2015, 15:08 pm
De nadas  ::)