2013-01-05 15 views
9

gcc -sとUnix strip実行ファイルからすべてのシンボルテーブルと再配置情報を削除します(サイズを小さくする)。実行ファイルからすべてのシンボルテーブルと再配置情報を削除した場合の影響?

これは実行ファイルの機能に影響を及ぼしますか?実行するオペレーティングシステムによってはASLRが必要ですか?そうでない場合は、なぜそれらを最初から守っていますか?

少し詳細上記の概要が役立ちます。

+1

最近の「ストリップ」が再配置情報を削除するかどうかはわかりません。そうでないと思いますか? – NPE

+0

@NPE 'gcc -s 'と 'gcc ' + 'strip'は全く同じサイズの実行可能ファイルを生成しました。しかし、あなたは正しいです、それは再配置情報を削除しません。 –

+0

[この質問](http://stackoverflow.com/questions/2463150/fpie-position-independent-executable-option-gcc-ld)を参照してください。 fPIE(およびfPIC)コードは、その場所をハードコードする必要がないため、再配置情報は必要ありません。 –

答えて

4

再配置情報を削除するとASLRが妨げられることは明らかです。

しかし、私はいくつかのシステムでman stripを見てきましたが、stripは再配置情報を削除することを示唆していません。これは、主にデバッグシンボルの削除に関するものです。

+0

あなたはそこにあります。他方、 'gcc -s'は再配置情報をバイナリに追加しません。再配置テーブルは重要でなければなりませんか? ELFがローディング時にそれを使用することを考慮してください。 –

関連する問題