GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere un indirizzo di memoria specifico usando C

Un problema che hai è che stai recuperando un indirizzo virtuale, non l'indirizzo fisico in cui risiede la memoria. Al prossimo avvio, la mappatura probabilmente non sarà la stessa.

Questo può sicuramente essere fatto all'interno di un modulo del kernel in Linux, ma non penso che ci sia alcun tipo di API nello spazio utente che puoi usare.

Se hai il permesso (e presumo che potresti essere root su questa macchina se la stai riavviando), puoi dare un'occhiata a /dev/mem per vedere l'attuale layout fisico. Forse dovresti provare a campionare i valori, riavviare e vedere quanti di questi valori persistevano.


Esiste un progetto simile in cui viene dimostrato un attacco di avvio a freddo. Il codice sorgente è disponibile, forse puoi trarre ispirazione da lì.

Tuttavia, AFAIR leggono la memoria senza prima caricare un sistema operativo e quindi non devono interferire con la protezione della memoria del sistema operativo. Forse dovresti provare anche questo per evitare che la memoria venga sovrascritta o cancellata dal sistema operativo dopo l'avvio.

(Controlla anche il video sul sito, è piuttosto impressionante;)


Linux
  1. Come trovare testo specifico usando GREP su Linux

  2. CentOS / RHEL 6:come limitare le risorse di memoria per un utente specifico utilizzando cgroup

  3. Come ottenere l'indirizzo MAC della tua macchina usando un programma C?

  4. Come ottenere l'utilizzo totale della CPU in Linux usando C++

  5. Come ottenere il numero di CPU in Linux usando C?

Come trovare/ottenere il tuo indirizzo IP in Linux

Come controllare la memoria condivisa di Linux usando il comando ipcs

Come ottenere il tuo indirizzo IP su Linux

Come ottenere l'indirizzo IP del contenitore Docker

Come bloccare un indirizzo IP usando .htaccess?

Come ottenere il nome di dominio in Windows usando il comando?