8 clase ensamblador prog .com.exe, pila

9
Fuente Internet UFPS Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net Sistema Operativo Funciones del S.O. Gestión de los recursos del computador: Debe de controlar a este nivel la asignación de recursos a los programas libres en ejecución, recuperación de recursos cuando los programas no los necesitan. Será lo que conoceremos como "nivel kernel". Ejecución de servicios para los programas: Estos servicios incluirán varios para lanzar la ejecución de un programa, comunicar unos con otros, operar con la E/S, sobre ficheros, y el tratamiento y solución de errores. Lo llamaremos más adelante "nivel API" Ejecución de los mandatos de los usuarios: Es el módulo del sistema operativo que permite que los usuarios dialoguen de forma interactiva con el sistema, conocido como "nivel shell". Nivel Kernel Kernel es la parte más interna de un sistema operativo, la que maneja las cosas más básicas que este posee y da la base para que podamos utilizarlo. Asignación de recursos: Proporcionarlos para aquellos programas que se encuentran en ejecución, manteniendo para ello estructuras que le permitan saber qué recursos están libres y cuáles están asignados a cada programa, teniendo en cuenta la disponibilidad de los mismos. Protección: Ha de garantizarse en este nivel que existe protección entre los usuarios del sistema, y que la información ha de ser confidencial, asegurándose de que unos trabajos no interfieran con otros, impidiendo que unos programas puedan acceder a los recursos de otros. Nivel API Consiste en una serie de servicios que los programas pueden solicitar, complementando los que el hardware proporciona. API facilita el abrir un fichero y no preocuparse que abrir ficheros localizándolos físicamente en el disco duro. Ejecución de programas: Se proporcionan funciones para lanzar la ejecución de un programa así como para pararla o abortarla, junto con otros que sirvan para conocer y modificar las condiciones de ejecución de los programas, para comunicar y sincronizar unos programas con otros Operaciones de E/S: Proveen de operaciones de lectura, escritura y modificación del estado de los periféricos; la programación de estas operaciones de E/S es compleja y depende del hardware en particular utilizado, ofreciéndose con estos servicios un nivel alto de abstracción para que el programador de aplicaciones no haya de preocuparse de estos detalles. Operaciones sobre ficheros: Ofrecen un nivel mayor en abstracción que las operaciones de E/S, orientadas en este caso a ficheros y por lo tanto a operaciones como la creación, borrado, renombrado, apertura, escritura y lectura de ficheros, Detección y tratamiento de errores: Se trata de la parte en que se controlan los posibles errores que puedan detectarse. Nivel de Shell Se encarga de atender y llevar a cabo las peticiones de los usuarios del computador, proporcionando una serie de funciones básicas que el usuario pueda llevar a cabo. El shell es el interfaz con el que interactuamos normalmente, que intenta crear un entorno acogedor para el usuario, intuitivo; uno de los objetivos que se necesitan obtener, es que se facilite el trabajo a los usuarios novatos pero que al tiempo esto no destruya la productividad de los usuarios más avanzados. SHELL API KERNEL

Upload: andres-grimaldo

Post on 06-Dec-2015

13 views

Category:

Documents


0 download

DESCRIPTION

Guia basica cLase de ensamblador, explicacion de programas .exe y Pila

TRANSCRIPT

Page 1: 8 Clase Ensamblador Prog .Com.exe, Pila

Fuente Internet UFPS

Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net

Sistema Operativo Funciones del S.O.

Gestión de los recursos del computador: Debe de controlar a este nivel la asignación de recursos a los programas libres en ejecución, recuperación de recursos cuando los programas no los necesitan. Será lo que conoceremos como "nivel kernel".

Ejecución de servicios para los programas: Estos servicios incluirán varios para lanzar la ejecución de un programa, comunicar unos con otros, operar con la E/S, sobre ficheros, y el tratamiento y solución de errores. Lo llamaremos más adelante "nivel API"

Ejecución de los mandatos de los usuarios: Es el módulo del sistema operativo que permite que los usuarios dialoguen de forma interactiva con el sistema, conocido como "nivel shell".

Nivel Kernel

Kernel es la parte más interna de un sistema operativo, la que maneja las cosas más básicas que este posee y da la base para que podamos utilizarlo.

Asignación de recursos: Proporcionarlos para aquellos programas que se encuentran en ejecución, manteniendo para ello estructuras que le permitan saber qué recursos están libres y cuáles están asignados a cada programa, teniendo en cuenta la disponibilidad de los mismos.

Protección: Ha de garantizarse en este nivel que existe protección entre los usuarios del sistema, y que la información ha de ser confidencial, asegurándose de que unos trabajos no interfieran con otros, impidiendo que unos programas puedan acceder a los recursos de otros.

Nivel API

Consiste en una serie de servicios que los programas pueden solicitar, complementando los que el hardware proporciona.

API facilita el abrir un fichero y no preocuparse que abrir ficheros localizándolos físicamente en el disco duro.

Ejecución de programas: Se proporcionan funciones para lanzar la ejecución de un programa así como para pararla o abortarla, junto con otros que sirvan para conocer y modificar las condiciones de ejecución de los programas, para comunicar y sincronizar unos programas con otros

Operaciones de E/S: Proveen de operaciones de lectura, escritura y modificación del estado de los periféricos; la programación de estas operaciones de E/S es compleja y depende del hardware en particular utilizado, ofreciéndose con estos servicios un nivel alto de abstracción para que el programador de aplicaciones no haya de preocuparse de estos detalles.

Operaciones sobre ficheros: Ofrecen un nivel mayor en abstracción que las operaciones de E/S, orientadas en este caso a ficheros y por lo tanto a operaciones como la creación, borrado, renombrado, apertura, escritura y lectura de ficheros,

Detección y tratamiento de errores: Se trata de la parte en que se controlan los posibles errores que puedan detectarse.

Nivel de Shell

Se encarga de atender y llevar a cabo las peticiones de los usuarios del computador, proporcionando una serie de funciones básicas que el usuario pueda llevar a cabo.

El shell es el interfaz con el que interactuamos normalmente, que intenta crear un entorno acogedor para el usuario, intuitivo; uno de los objetivos que se necesitan obtener, es que se facilite el trabajo a los usuarios novatos pero que al tiempo esto no destruya la productividad de los usuarios más avanzados.

SHELL

API

KERNEL

Page 2: 8 Clase Ensamblador Prog .Com.exe, Pila

Fuente Internet UFPS

Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net

Manipulación de archivos y directorios: La interfaz ha de proporcionar operaciones para crear, borrar, renombrer y procesar archivos y directorios.

Ejecución de programas: El shell o interfaz ha de proporcionar mecanismos para que desde él se puedan ejecutar programas.

Herramientas para el desarrollo de aplicaciones: Debe poseer utilidades como compiladores para que el usuario pueda construir sus propias aplicaciones.

Comunicación con otros sistemas: Han de existir herramientas básicas para acceder a recursos localizados en otros sistemas, como puedan ser telnet o ftp.

Información de estado del sistema: Utilidades que permitan consultar y/o cambiar cosas como la fecha, hora, número de usuarios conectados al sistema, cantidad de disco y de memoria disponible.

Configuración: El interfaz ha de ser configurable en su modo de operación según las preferencias del usuario (por ejemplo, formato de fechas y lenguaje).

Seguridad: En sistemas multiusuario (Unix, Windows NT), la interfaz ha de controlar el acceso de usuarios al sistema para mantener su seguridad.

OTRA REPRESENTACIÓN DEL S.O

Estructura de Linux

Estructura de Windows 7 y 8

Page 3: 8 Clase Ensamblador Prog .Com.exe, Pila

Fuente Internet UFPS

Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net

Estructura de Android

Un sistema operativo es:

Monotarea: También monoproceso, ya que sólo permiten que haya un proceso en cada momento. Un ejemplo típico de esto sería Ms-Dos.

Multitarea: multiproceso, permitiendo que existan varios procesos activos al mismo tiempo, encargándose el sistema operativo de repartir el tiempo de procesador entre ellos.

Monousuario: Sólo un usario puede ser soportado a la vez, pudiendo no obstante ser mono o multiproceso.

Multiusuario: En ellos, el sistema operativo soporta varios usuarios a la vez en distintos terminales; un sistema así, es obligatoriamente multitarea.

Los sistemas operativos se pueden clasificar en base a la cantidad de funcionalidad implementada en su núcleo. En general distinguimos dos tipos de sistemas operativos:

Monolíticos: son núcleos de gran tamaño (muchas líneas de código) con un alto número de funcionalidades, las cuales normalmente son compiladas junto al núcleo en el mismo momento.

Micronúcleos: son núcleos de pequeño tamaño que fueron compilados sólo con las necesidades más básicas del sistema operativo. El resto de funcionalidades son añadidas mediante la adición de módulos externos al núcleo, lo que les proporciona flexibilidad y facilidad de ampliación en detrimento del desempeño necesario para la gestión dinámica de éstos.

Pico/Nanonúcleos: se puede considerar un subtipo de Micronúcleo, son núcleos muy pequeños y flexibles, incluso más pequeños que los Micronúcleos. Se usan en sistemas muy específicos, como satélites, en los que ya se sabe los procesos que se van a realizar. Son muy fiables.

Page 4: 8 Clase Ensamblador Prog .Com.exe, Pila

Fuente Internet UFPS

Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net

PROCESO DE ARRANQUE

PASO 1. POST El arranque de un PC comienza con el llamado "autotest de encendido", más conocido como "Power On Self Test" o POST, una serie de comprobaciones iniciales del hardware para asegurarse de que al menos los primeros pasos del arranque son correctos.

1

2

3

4

5

Page 5: 8 Clase Ensamblador Prog .Com.exe, Pila

Fuente Internet UFPS

Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net

PASO 2. MBR Después de realizar las comprobaciones comentadas, el equipo comienza la carga del sistema operativo y el programa de instalación de Windows coloca en memoria determinados datos en la partición principal del disco duro (el sector de arranque); esos datos se denominan MBR o Master Boot Record (registro de arranque maestro) y contiene instrucciones ejecutables. Un gestor de arranque (bootmanager) permite mantener varios sistemas operativos en un ordenador y alternar entre ellos. El usuario selecciona el sistema operativo durante el arranque; para cambiar de sistema operativo se debe reiniciar el ordenador. La condición previa es que el gestor de arranque elegido resulte adecuado para todos los sistemas operativos instalados. Algunos (DIFERENTE A VIRTUALIZACION) Inicializador LILO

Programa cargador de Linux por defecto, LILO es Linux Loador

Arrancar con GRUB GRUB (Grand Unified Bootloader) está compuesto por dos etapas: la primera (stage1) es de 512 bytes y está guardada en el MBR o en el bloque de arranque de una partición de disco o disquete; la segunda etapa (stage2), más grande, se carga a continuación y contiene el código del programa. En GRUB, la única función de la primera etapa es cargar la segunda etapa del cargador de arranque.

Cargador de arranque con YaST

Antes de realizar cambios en la configuración del cargador de arranque, se recomienda familiarizarse con los aspectos teóricos del proceso de arranque. Las labores de configuración en sí resultan muy sencillas gracias al módulo correspondiente de YaST.

Sistema de Archivos FAT IO.SYS: Contiene programas que permiten al DOS utilizar el teclado, video, impresora, etc. Enlaza al DOS con los programas del BIOS. MSDOS: Ocupa dos espacios, cargando todos comandos y programas que vincula el DOS. Es el Kernel del Sistema Operativo. CONFIG.SYS: Especifica varios controles que se cargan en la memoria, como los son la carga del HIMEM.SYS, MOUSE.SYS, EMM386.EXE, COMMAND.COM. AUTOEXEC.BAT: Define los valores por defecto para la hora y fecha, así como la especificación de programas que se desean cargar automáticamente como si se escribiera su ejecución desde el teclado. Además permite especificar cuales programas se desean que se carguen en la memoria alta.

Sistema de Archivos NTFS El programa de instalación también copia dos archivos necesarios e imprescindibles para la carga normal del sistema en el directorio raíz del disco de arranque y son los conocidos y famosos NTLDR y NTDETECT. Además, hay otro archivo necesario y que contiene todas las opciones de arranque: BOOT.INI.

Page 6: 8 Clase Ensamblador Prog .Com.exe, Pila

Fuente Internet UFPS

Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net

Ejecución del NTLDR (NT Loader). El Ntldr se abre para saber como iniciar la carga del sistema. Leerá a continuación el archivo boot.ini que como decíamos contiene las opciones de arranque y si resulta que las hay, el menú correspondiente aparecerá en la pantalla del monitor. Inicia el archivo NTDETEC y luego a NTOSKRNL – HAL Ejecución de NTDETECT Ntdetect se encarga de preguntar a la BIOS del sistema sobre los dispositivos hardware instalados en el equipo y su configuración. Una vez recogida esta información Ntdetect la guarda dentro del registro de Windows, en la ruta HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION. NTOSKRNL y HAL (NT Operating System Kernel) - (Hardware Abstraction Layer) Estos archivos estan situados en el directorio System32 de Windows. Ntoskrnl es el archivo principal para el Kernel (núcleo del sistema) y los subsistemas de ejecución de Windows (gestor de memoria, gestor de caché, programador, monitor de referencia de seguridad, etc. Hal.dll que contiene el código que permite a los dispositivos de hardware comunicarse con el sistema operativo. API -> kernel32.dll, gdi32.dll y user32.dll smss.exe Y lanza winlogon.exe

SECUENCIA DE CARGA Se inicia la carga del sistema operativo. Esta fase también se denomina fase del kernel y es el momento en que el sistema operativo instala los controladores de los dispositivos, aunque Ntldr sigue unas pautas para realizar la carga de estos en un orden determinado y también de los servicios de Windows, que posteriormente se escribirán en el registro. Se carga en la rama del REGEDIT: HKEY_LOCAL_MACHINE\SYSTEM\Current ControlSet\Services donde veremos una lista de servicios y controladores de dispositivos, seleccionamos alguno de ellos y analizamos la entrada REG_DWORD; * 1. Si el valor de datos es (0), significa que el servicio se ha cargado durante la fase de datos del kernel. * 2. Si el valor de datos es (1), significa que el servicio se ha cargado durante la fase de inicialización del kernel (que veremos a continuación). * 3. Si el valor de datos es (2), significa que el servicio se ha cargado durante la fase de instalación de servicios. * 4. Si el valor de datos es (3), significa que el servicio está habilitado pero no se ha inicializado (requiere un inicio manual, haciendo uso del MMC (Microsoft Management Console, para más información sobre MMC, consultar la ayuda de Windows)). * 5. Por último, si el valor de datos es (4), significa que el servicio no está habilitado..

CARGA DEL SISTEMA En este momento toma las riendas Ntoskrnl, iniciando el kernel de Windows y los susbsistemas. Subsistema de gestión de sesión (smss.exe) configura el entorno de usuario. Se instala también los tres archivos que configuran el API necesario para que los programas puedan iniciarse: kernel32.dll, gdi32.dll y user32.dll.

INICIO DE SESIÓN El subsistema Win32 (proceso servidor que ejecuta unas funciones determinadas del sistema operativo y que proporciona la interfaz para aplicaciones específicamente construidas para Windows NT) lanza winlogon.exe, para mostrar la pantalla de bienvenida que nos permitirá introducir el nombre de usuario y contraseña e instala la "autoridad de seguridad local" (Local Security Authority, lsass.exe).

Programas .COM y .EXE

El DOS da soporte a dos tipos de programas ejecutables (.COM y .EXE)

Los programas .COM son programas que constan de un segmento de código, datos y pila, son residentes en memoria, para lo cual se interpreta residente como aquel programa que se instala en memoria y queda temporalmente mientras esta encendido el equipo permaneciendo disponible mientras otros programas se ejecutan.

Page 7: 8 Clase Ensamblador Prog .Com.exe, Pila

Fuente Internet UFPS

Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net

Ejemplo: Antivirus, Software de Quemadoras, Winamp con el Winagent.

Los archivos COM tienen como máximo 65536 bytes de extensión, que "curiosamente" coinciden con 0FFFFh, que es el máximo valor que puede tener un registro de 16 bits.

El .COM tiene también una zona normalmente que va de 0 a 100h en la que tiene el PSP, zona de datos en la que entre otras cosas está la DTAa ( para trabajar con ficheros, a partir del Offset 80h )

.MODEL TINY ; Indica que es pequeño

.CODE ; Código ORG 100h ; Esta es la dirección a partir de la cual empieza el código, normalmente es ;100h para dejar espacio al PSP Start: jmp Entrada [Datos] Entrada PROC [Codigo] Entrada ENDP END Start

Programa .EXE

Proceso de Carga de un Programa .EXE

a. Se accesa al programa .EXE

b. Se construye el PSP “Apuntador de pila” de 256 bytes ó 100H en memoria interna

c. Se almacena el programa en memoria despues de los 256 bytes.

d. Se carga la dirección del PSP en los DS y ES.

e. Se carga la dirección del segmento de código en el CS y se inicia el IP al primer desplazamiento.

f. Carga la dirección de la pila en el SS y se establece el SP que es el tamaño de la pila.

g. Transfiere el control directamente ya al programa.

PILA O STACK

Todo programa en la descripción anterior que se hizo vemos que necesita un espacio de memoria temporal donde pueda cargar sus instrucciones. Estas instrucciones se basan en direcciones que contienen datos de ahí su importancia.

La pila para los programas .COM la define el DOS

La pila para los programas .EXE la define el usuario al decir BUFFERS=47474 etc

Funcionamiento

a. Registro SS apunta al inicio de la pila y el SP contiene el tamaño.

b. Cuando se colocan datos en la pila su utiliza PUSH disminuyendo el tamaño de la pila.

c. Cuando se sacan datos en la pila se utiliza POP liberando posiciones en la pila

Ejemplo Recuerde que cuando se guarda se invierte el valor dentro de la posición de la pila.

AX= 015AH BX= 03D2H y el SP=28H.

PUSH AX Reduce la pila a SP=26H apuntador de pila y lo coloca invertido ósea 5A01

Page 8: 8 Clase Ensamblador Prog .Com.exe, Pila

Fuente Internet UFPS

Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net

PUSH BX Reduce la pila a SP=24H apuntador de pila y lo coloca invertido ósea D203

POP BX Libera la pila a SP=26H apuntador de pila y lo coloca invertido ósea 03D2H

POP AX Libera la pila a SP=28H apuntador de pila y lo coloca invertido ósea 015AH

Variantes de la Instrucción de PILA

POPF - POPFD Saca de pila y coloca en el registro bandera sencillo o doble

PUSHF – PUSHFD Coloca en pila el registro banderas sencillo o doble

POPA – POPAD Saca de pila y coloca en el registro AX ó EAX (ax,bx,cx,dx,sp,bp,di,si)

PUSHA – PUSHAD Coloca en pila los registros AX ó EAX (ax,bx,cx,dx,sp,bp,di,si)

FUNCIONAMIENTO NORMAL DE UNA PILA

Page 9: 8 Clase Ensamblador Prog .Com.exe, Pila

Fuente Internet UFPS

Esp.I.S Miguel Fabian Robles A. Material de Apoyo Ing. Sistemas www.robgon.net

FUNCIONAMIENTO OPERATIVO DE UNA PILA