2013-01-05 9 views
9

compilazione utilizzando gcc -s e Unix strip rimuovere tutte le informazioni tabella dei simboli e trasferimento da un file eseguibile (rendendolo di dimensioni più piccole).Effetti della rimozione di tutte le informazioni sulla tabella dei simboli e di trasferimento da un file eseguibile?

Ciò potrebbe influire sul funzionamento dell'eseguibile? Alcuni sistemi operativi che eseguono ASLR hanno bisogno di queste informazioni? Se no, perché tenerli in giro in primo luogo?

Un po'- dettagliato panoramica di quanto sopra sarebbe utile.

+1

Non sono sicuro che nessuna 'striscia' moderna possa rimuovere le informazioni di trasferimento. Pensi diversamente? – NPE

+0

@NPE 'gcc -s ' e 'gcc ' + 'strip' ha restituito l'esatto eseguibile della stessa dimensione, quindi ho pensato che stessero facendo lo stesso. Ma hai ragione, non rimuove le informazioni di trasferimento. –

+0

Vedere [questa domanda] (http://stackoverflow.com/questions/2463150/fpie-position-independent-executable-option-gcc-ld). Il codice fPIE (e fPIC) non ha bisogno di hardcode la sua posizione, quindi non ha bisogno di alcuna informazione di trasferimento. –

risposta

4

Sembra abbastanza chiaro che la rimozione delle informazioni di ricollocazione interferirebbe con ASLR.

Tuttavia, ho dato un'occhiata a man strip su un paio dei miei sistemi, e nessuno di loro suggerisce che lo strip (o in effetti può?) Rimuova le informazioni di trasferimento. Si tratta principalmente di rimuovere i simboli di debug.

+0

Sei proprio lì. 'gcc -s' d'altra parte, non aggiungerà le informazioni di trasferimento al binario. Il tavolo di ricollocazione deve avere importanza? Considerando che l'ELF lo usa al momento del caricamento. –

Problemi correlati