Seg informatica
AlgunosConceptos Básicos: Ahora Explicaremos algunos de los conceptos de StackOverflow necesarios para empezar ya que los demás conceptos los iremos viendo a medida q desarrollemos el tutorial. Stack: todo programa lo que hace al compilar es traducir su código a lenguaje ensamblador y este es el lenguaje el q traduce cada instrucción a lenguaje maquina que es lo que entiende nuestro procesador ahora unprograma en ensamblado o código ensamblador se divide en 3 partes: 1.- Stack Segment. “Segmento de Pila” 2.- Data Segment. “Segmento de Datos” 3.- Code Segment. “Segmento de Codigo” Ahora la primera parte es a la que refiere el Stack o pila es la parte del código ensamblador Pero q es la Pila: La pila (stack) es una estructura tipo LIFO, Last In, First Out, ultimo en entrar, primero en salir. Piensen enuna pila de libros, solo puedes añadir y quitar libros por la "cima" de la pila, por donde los añades. El libro de mas "abajo", será el ultimo en salir, cuando se vacíe la pila. Si tratas de quitar uno del medio, se puede desmoronar.
Bien, pues el SO (tanto Windows como Linux, como los Unix o los Macs) se basa en una pila para manejar las variables locales de un programa, los retornos (rets)de las llamadas a una función (calls), las estructuras de excepciones (SEH, en Windows), argumentos, variables de entorno, etc... Por ejemplo, para llamar a una función cualquiera, que necesite dos argumentos, se mete primero el argumento 2 en la pila del sistema, luego el argumento 1, y luego se llama a la función. Si el sistema quiere hacer una suma (5+2), primero introduce el 2º argumento en lapila (el 2), luego el 1º argumento (el 5) y luego llama a la función suma. Bien, una "llamada" a una función o dirección de memoria, se hace con la instrucción ASM Call. Call dirección (llamar a la dirección) ó call registro (llama a lo que contenga ese registro). El registro EIP recoge dicha dirección, y la siguiente instrucción a ejecutar esta en dicha dirección, hemos "saltado" a esadirección. Pero antes, el sistema debe saber que hacer cuando termine la función, por donde debe seguir ejecutando código. El programa puede llamara la función suma, pero con el resultado, hacer una multiplicación, o simplemente mostrarlo por pantalla. Es decir, la CPU debe saber por donde seguir la ejecución una vez terminada la función suma. Para eso sirve la pila :) Justo al ejecutar el call, se GUARDAla dirección de la siguiente instrucción en la pila. Esa instrucción se denomina normalmente RET o RET ADDRESS, dirección de "retorno" al programa principal (o a lo que sea). Entonces, el call se ejecuta, se guarda la dirección, coge los argumentos de la suma, se produce la suma y, como esta guardada la dirección por donde iba el programa, VUELVE (RETORNA) a la dirección de memoria que habíaguardada en la pila (el ret), es decir, a la dirección siguiente del call. Snack OverFlow: Como su nombre refiere es el desbordamiento de la pila pero a que nos referimos con Desbordamiento, bueno quiere decir que cuando nosotros reservamos espacio en la memoria este tiene una longitud determinada ya sea por el programa o por nosotros mismo y ingresamos mas datos de los permitidos entonces existirá...
Regístrate para leer el documento completo.