Pillole di MalwareAnalysis: Il virtual address space
- Antonio Capobianco
- Visite: 3907
Per poter fare efficacemente #malwareAnalysis è importante capire le strutture di memoria dei sistemi operativi.
Tra queste è fondamentale comprendere il concetto di #VAS o virtual address space.
Lo spazio degli indirizzi virtuali può essere definito come l'intervallo di indirizzi con cui un processo funziona che va da un valore basso (0x0) al più alto possibile. Il massimo è limitato dall'architettura del set di istruzioni e dalla dimensione massima del puntatore implementata dal sistema operativo (32/64 bit, ecc.).
Un tipico esempio potrebbe essere un sistema operativo a 32 bit che esegue un processo dove il Virtual Address Space ( VAS ) del programma è di 4 GB (da 0 a 2^32-1).
Attenzione, si chiama #VirtualAddressSpace perchè è virtuale quindi non vi è una mappatura 1 a 1 con la memoria fisica. Questo indica che tutti i processi hanno indirizzi virtuali identici (o quasi), ma questi indirizzi vengono mappati in differenti aree di memoria.
Quindi, se ogni processo avrà lo stesso spazio di indirizzi, non accederanno/distruggeranno reciprocamente i dati? No, perché quando il processo1 accede a VAS 0X3233A (diciamo), non accede alla stessa area di memoria fisica assegnata al VAS 0x3233A del processo2.
Questa mappatura si trova in una struttura chiamata #PageTable appartenente ad ogni singolo processo.
Quindi, quando 0X3233A viene cercato nella tabella delle pagine del processo1, potrebbe puntare a una posizione di memoria 0X234AA nella memoria fisica . D'altra parte, se 0X3233A viene cercato nella tabella delle pagine del processo2, potrebbe puntare alla posizione di memoria fisica 0x11BB.
Naturalmente sto parlando di processi che girano nella User Memory. I processi Kernel, non hanno una VAS ma condividono tutti lo stesso spazio di indirizzamento.
Nella prossima pillola vi spiegherò le implicazioni dello spazio di indirizzamento unico dei processi Kernel.
Stay Tuned!