PDA

View Full Version : Accesso alla memoria RAM e tab. dei vettori]


Teo@Unix
06-11-2009, 15:01
Sò che è possibile accedere alla tabella dei vettori che riportano la lista di interrupt tramite istruzioni assembler utilizzando i registri SI e DI, ho trovato anche esempi di codice nella rete...

è probabile che la risposta sia no, ma mi chiedevo se tramite il codice C è possibile fare la stessa cosa, cioè accedere e modificare l'area di memoria RAM alle prime locazioni... ho provato con qualche veloce tentativo ma l'errore è sempre (come mi aspettavo) segmentation fault (su Linux), su windows il processo termina con errori... qualcuno sa qualcosa in più?? Grazie...

WarDuck
06-11-2009, 18:50
In teoria il SO non dovrebbe permetterti di farlo (non con privilegi user quantomeno) in quanto in genere quell'area di memoria dovrebbe essere protetta. Ma aspetta qualcuno che ne sa più di me.

_Claudio
06-11-2009, 18:54
Sò che è possibile accedere alla tabella dei vettori che riportano la lista di interrupt tramite istruzioni assembler utilizzando i registri SI e DI, ho trovato anche esempi di codice nella rete...

è probabile che la risposta sia no, ma mi chiedevo se tramite il codice C è possibile fare la stessa cosa, cioè accedere e modificare l'area di memoria RAM alle prime locazioni... ho provato con qualche veloce tentativo ma l'errore è sempre (come mi aspettavo) segmentation fault (su Linux), su windows il processo termina con errori... qualcuno sa qualcosa in più?? Grazie...

Insomma vuoi accedere in pagina 0.
Dovresti assumere i privilegi di sistema, cioè intrufolare una applicazione che al riavvio viene eseguita come parte del sistema, e da lì leggere la RAM in pagina 0.

Teo@Unix
07-11-2009, 11:50
Già era ciò che temevo, usare una inline assembly nel codice C secondo voi cambia qualcosa?

_Claudio
07-11-2009, 14:00
Già era ciò che temevo, usare una inline assembly nel codice C secondo voi cambia qualcosa?

Direi no... è sempre codice che viene eseguito nell'ambito dell'applicazione con i privilegi dell'applicazione, non è diverso da scrivere codice C che fa la stessa cosa... certo è che se chiami una libreria esterna che ha i privilegi di sistema.
Se lavori su unix/linux dai un occhio alle primitive POSIX e alla teoria dell'allocazione dei thread a livello sistema...

Teo@Unix
07-11-2009, 14:33
grazie, conosci qualche link sui thread POSIX buono per questo argomento?
Io consulto spesso e volentieri gapil, ma li non se ne parla..

_Claudio
08-11-2009, 10:44
grazie, conosci qualche link sui thread POSIX buono per questo argomento?
Io consulto spesso e volentieri gapil, ma li non se ne parla..

Purtroppo no, a parte la descrizione ufficiale dello standard (dai una googlata).