|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
[generale] tipi di indirizzamento
Ciao,
credo sia una cosa piuttosto banale.... non ho capito una cosa riguardo a come i s.o. caricano gli eseguibili in memoria. Il punto è: con linux, utilizzando un debugger (gdb) osservo che gli eseguibili vengono caricati ad indirizzi sempre diversi in memoria, ovvero se chiedo a gdb di stamparmi parte dello stack con: (gdb) x/100 $esp ... noto che gli indirizzi sulla sinistra ogni volta sono diversi! su windows utilizzando un'altro debugger noto che il mio eseguibile è caricato sempre agli stessi indirizzi.... come se il debugger su windows riporta gli indirizzi relativi, mente gdb gli assoluti di memoria. sono fuori strada? probabilmente è una baggianata, ma non ho capito ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2001
Messaggi: 12814
|
Quale Windows usi e quale compilatore?
Potrebbe dipendere dall'ALSR, è una tecnica per caricare gli eseguibili in locazioni di memoria casuali per evitare possibili exploit. Linux dovrebbe avere questa funzionalità e ce l'hanno anche i nuovi Windows (da Vista in poi), tuttavia non so se i programmi debbano essere compilati con determinati parametri. Per i programmi in C# questa cosa è attivata di default, quindi credo anche per il resto della piattaforma .NET. Se stai usando MinGW invece ho paura di no. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
grazie per la risposta,
su linux so solo che esiste una protezione per la randomizzazione dello stack. Ma questa si può disabilitare. Anche in fase di compilazione vi sono dei flag riguardanti la sicurezza, ma non so se ve ne sia uno per l'allocamento in memoria sempre in punti diversi. Non conosco altro (su Debian) Su debian uso gcc 4.3.2 e gdb 6.8 Mentre su windows 7 per questi test sto usando Dev-C++ più ollydbg come debugger. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:53.