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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Frame y dirección de memoria.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Frame y dirección de memoria.  (Leído 1,725 veces)
LaiaxanIV

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Frame y dirección de memoria.
« en: 1 Abril 2016, 17:37 pm »

Código:
   int f = alloc_frame();
   if(f == -1) return -1;
    copy_data((unsigned int)f<<12,0x00,4096);

alloc_frame() devuelve el numero de frame que está libre, sabiendo que el frame es de 4096B, necesito copiar eso a la pos 0x00 de memoria.

Código:
void copy_data(void *start, void *dest, int size)
Esta es la cabecera de copy_data.

Alguna idea de como lo puedo hacer? Me da un page_fault si pongo como dirección a copiar f*4096. Si pongo a mano la dirección me funciona perfectamente.


« Última modificación: 1 Abril 2016, 18:01 pm por LaiaxanIV » En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Frame y dirección de memoria.
« Respuesta #1 en: 1 Abril 2016, 19:12 pm »

El destino 0x0 no es escribible


En línea

LaiaxanIV

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Frame y dirección de memoria.
« Respuesta #2 en: 1 Abril 2016, 19:26 pm »

Código:
allocate_DIR((struct task_struct*)child);
page_table_entry * PTc = get_PT((struct task_struct*)child);
page_table_entry * PTd = get_PT((struct task_struct*)dad);
 
 
for(i = 0; i < 256+8+20;++i){
    set_ss_pag(PTc, i,get_frame(PTd,i));
}
   
for( i = 264; i < 264+20; ++i){
    int f = alloc_frame(); //Agafem el frame lliure
    if(f == -1) return -5;
    set_ss_pag(PTd, (unsigned)i+500,f); //Assignem a la taula de pàgines del pare la traducció.
    set_ss_pag(PTc,(unsigned)i,f);          //Igualment per al fill.
   copy_data(((unsigned int)(get_frame(PTd,i)<<12)),((unsigned int)(f)<<12),4096);
  }

Así es el código, el error está en el segundo parametro que nos da page fault.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
imprimir los bits que hay en una direccion de memoria « 1 2 »
ASM
lapras 11 10,812 Último mensaje 4 Diciembre 2009, 16:26 pm
por Yurix
Darle la vuelta a una direccion de memoria.
Análisis y Diseño de Malware
0xDani 2 2,888 Último mensaje 2 Diciembre 2012, 21:02 pm
por 0xDani
Problema representación dirección de memoria en C.
Programación C/C++
lanun 6 2,820 Último mensaje 28 Febrero 2014, 19:44 pm
por lanun
Cargar función de una DLL solo con la dirección de memoria
Programación C/C++
patilanz 2 2,029 Último mensaje 3 Mayo 2018, 17:17 pm
por srWhiteSkull
Direccion de memoria + numero != Direccion de memoria esperada
Programación C/C++
dgrip 7 2,734 Último mensaje 22 Abril 2019, 12:55 pm
por dgrip
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines