Estoy intentando sobrescribir ciertas piezas en la memoria kernel (Linux 2.6.31, Ubuntu 9.10) en una máquina virtual (usando VirtualBox) a través de un módulo kernel. Cada vez que hago esto me sale este errorNo se puede escribir en la memoria kernel a través del módulo kernel de Linux (Ubuntu)
[27154.303726] ERROR: no se puede manejar la petición de localización al núcleo 0xc05769bc
Mi código:
unsigned char *p = (unsigned char *) c05769bc;
p[1] = (addr & 0x000000ff);
p[2] = (addr & 0x0000ff00) >> 8;
p[3] = (addr & 0x00ff0000) >> 16;
p[4] = (addr & 0xff000000) >> 24;
la dirección correcta y también mi código de escritura Solo estoy usando un puntero para escribir en la memoria del kernel. Me preguntaba por qué recibo este mensaje, ya que la página de memoria de esa dirección está definitivamente en la memoria.
¿Este comportamiento tiene algo que ver con la máquina virtual? ¿O el kernel reciente tiene algún tipo de protección integrada? Espero que alguien pueda darme alguna pista.
El problema parece estar relacionado con Ubuntu, porque el mismo código no falla con Debian.
TIA!
Willem
Debian en VM o independiente? –
Debian también en VM (VirtualBox) –