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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  ayuda memoria virtual
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda memoria virtual  (Leído 4,205 veces)
franfis

Desconectado Desconectado

Mensajes: 245



Ver Perfil
ayuda memoria virtual
« en: 18 Marzo 2012, 18:42 pm »

Hola, bueno realmente tengo muchas dudas sobre la memoria virtual; paginacion, segmentacion, reubicacion, proteccion, marco de pagina, etc.

Para comenzar ya leì esos conceptos pero solo lo entiendo a nivel teorico, en los libros de sistemas operativos solo hacen eso "a nivel teorico"  y unos ejemplillos digamos que no son reales usando terminos por ejemplo "sea un marco de pagina a....... numero de pagina b.....etc". No encuentro ejemplos, como se hace en 32 bits.

Por ejemplo de una instruccion de Olly dice:

 Stack SS:[0012FF58]=00000001  y el ss:0023 32bits 0(FFFFFFFF)

¿Que operacion se hizo para obtener 00000001?

Por otro lado ¿cada pagina tiene un proceso y sus propios segmentos SS, ES , etc ?

Bueno es unas de mis muchas dudas.

Gracias....


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: ayuda memoria virtual
« Respuesta #1 en: 19 Marzo 2012, 22:55 pm »

Stack SS:[0012FF58]=00000001  y el ss:0023 32bits 0(FFFFFFFF)

¿Que operacion se hizo para obtener 00000001?

00000001 es el valor que esta en esa direccion de memoria, la cual corresponde al stack. Es tan simple como hacer, por ej.

Código:
mov eax, dword ptr [0012FF58]

Por otro lado ¿cada pagina tiene un proceso y sus propios segmentos SS, ES , etc ?
...

Un proceso alloca una o varias paginas de memoria. El tema segmento-desplazamiento esta heredado de los 16 bits. En 32 bits casi no se usan, excepto, por ej. para establecer un exception handler. En este caso se usa FS.

Aunque, bueno, mis conocimientos de ASM son reducidos...


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: ayuda memoria virtual
« Respuesta #2 en: 20 Marzo 2012, 08:36 am »

Por otro lado ¿cada pagina tiene un proceso y sus propios segmentos SS, ES , etc ?
Bueno es unas de mis muchas dudas.
Gracias....

pues claro cada proceso tiene su par de registros con sus valores correspondiente en modo protegido de 32 bits
sino mal recuerdo el micro es el que se encarga de eso y tambien es el encargado de restarurarlos...
no encuentro la pagina donde habla de eso en mi librito :3
En línea

franfis

Desconectado Desconectado

Mensajes: 245



Ver Perfil
Re: ayuda memoria virtual
« Respuesta #3 en: 21 Marzo 2012, 17:23 pm »

Gracias  ::) creo que mis preguntas son muy minuciosas jeje ..

Cada proceso se carga en varias paginas, cada proceso en memoria tiene sus segmentos de codigo, datos,pila,etc. sin importar en que pagina esta ubicada. ¿cierto?

.data----> en una pagina
.code----> en otra pagina
.ext------>en otra pagina

¿Esto lo puedo probar con el softice? o ¿que herramienta es bueno para averiguarlo yo mismo? Es que intenté instalar softice en mi PC como hace 6 años y me era imposible configurarlo, tampoco habia mucha info.

Graciass otra vez
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: ayuda memoria virtual
« Respuesta #4 en: 21 Marzo 2012, 18:34 pm »

El tema es que Sice ya esta viejito. Se que existe una version de Sice para XP, pero no tengo idea de donde puedes bajarla.

Una cosa: no confundas paginas de memoria con "secciones allocadas". Para que te des una idea, por ej., si usas VirtualAlloc varias veces, dependiendo del tamaño a reservar, una o varias de las secciones allocadas pueden estar en la misma pagina de memoria...

Osea, que veas en Olly diferentes secciones de memoria, no significa que esten en diferentes paginas...

Saludos!

PD: Sobre esto, es probable que EternalIdol tenga una idea mas concluyente (y exacta) que la mia... :)
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


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


Ver Perfil WWW
Re: ayuda memoria virtual
« Respuesta #5 en: 21 Marzo 2012, 18:58 pm »

Usa WinDbg.

PD. Una pagina suele tener 4096 bytes de tamaño.
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
jacosito

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: ayuda memoria virtual
« Respuesta #6 en: 6 Abril 2012, 21:31 pm »

Gracias  ::) creo que mis preguntas son muy minuciosas jeje ..

Cada proceso se carga en varias paginas, cada proceso en memoria tiene sus segmentos de codigo, datos,pila,etc. sin importar en que pagina esta ubicada. ¿cierto?

.data----> en una pagina
.code----> en otra pagina
.ext------>en otra pagina

¿Esto lo puedo probar con el softice? o ¿que herramienta es bueno para averiguarlo yo mismo? Es que intenté instalar softice en mi PC como hace 6 años y me era imposible configurarlo, tampoco habia mucha info.

Graciass otra vez

A ver para aclarar conceptos.

Todavía se utilizan los segmentos y no es cosa del pasado.

La gran diferencia es que ahora los segmentos tienen un tamaño muchísimo mayor a 64KB (anteriores procesadores).

Bien, lo que ocurre es lo siguiente: El código/datos se encuentran delimitados a un segmento y este segmento cuando se carga en memoria, sólo se carga una/varias página(s) en memoria, no se carga todo el segmento en memoria solo la página que se necesite. El tamaño de la página es variable y depende mucho de que tipo de OS  se esté operando, si es base de datos, normalmente la página es de 8KB-16KB, de lo contrario 4KB o menos. La idea es hacer coincidir el tamaño de la página del procesador con la página que se maneja desde el OS.

Ahora, los segmentos se pueden definir de manera tal que sea uno solo pero el problema radica en el segmento de código que no se permite que se auto-modifique.

Ahora, el OS tiene tablas que se inicializaron al start-up y en las cuales se han definido las cosas necesarias para su buen funcionamiento: Tabla de interrupciones, de tareas locales, tareas globales, etc.

Saludos

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Programación C/C++
x64core 9 6,823 Último mensaje 28 Noviembre 2011, 17:20 pm
por x64core
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines