GNU/Linux >> Tutoriels Linux >  >> Linux

Autorisations d'accès de /dev/mem

Que donne ce qui suit :

cat /dev/mem | wc

J'obtiens :

cat: /dev/mem: Operation not permitted
   1908   11791 1048576

Donc pour moi, ça s'arrête à 1 Mo.

Notez que cat utilise open, pas mmap donc ce n'est pas un test identique.

Êtes-vous sûr de lire au-delà de 1 Mo ?


  1. Oui, vous avez raison, /dev/mem vous permet de mapper n'importe quelle adresse physique, y compris les E/S mappées en mémoire non RAM. Cela peut être utile pour un piratage rapide et sale pour accéder à un périphérique matériel sans écrire de pilote de noyau.

  2. CONFIG_STRICT_DEVMEM oblige le noyau à vérifier les adresses dans /dev/mem avec devmem_is_allowed() en arch/x86/mm/init.c , et le commentaire qui s'y trouve explique :

    * On x86, access has to be given to the first megabyte of ram because that area
    * contains bios code and data regions used by X and dosemu and similar apps.
    * Access has to be given to non-kernel-ram areas as well, these contain the PCI
    * mmio resources as well as potential bios/acpi data regions.
    

    votre adresse 0xFFFF0000 est très probablement non RAM, car les BIOS placent généralement la mémoire IO juste en dessous de 4 Go, c'est pourquoi vous pouvez la mapper même avec STRICT_DEVMEM.


Linux
  1. Comment générer un mot de passe aléatoire sous Linux en utilisant /dev/random

  2. Linux :Différence entre /dev/console , /dev/tty et /dev/tty0 ?

  3. Quelle est la portabilité de /dev/stdin, /dev/stdout et /dev/stderr ?

  4. Comment mapper les périphériques /dev/sdX et /dev/mapper/mpathY à partir du périphérique /dev/dm-Z

  5. Que sont les fichiers /dev/zero et /dev/null sous Linux

tty (/dev/tty ) vs pts (/dev/pts) sous Linux

Comment encoder en base64 /dev/random ou /dev/urandom ?

Qu'est-ce que /dev/mem ?

noyau :désactiver /dev/kmem et /dev/mem

Pourquoi < ou > sont-ils nécessaires pour utiliser /dev/tcp

Différences entre /dev/sda et /dev/sda1