gcc -s
とUnix strip
実行ファイルからすべてのシンボルテーブルと再配置情報を削除します(サイズを小さくする)。実行ファイルからすべてのシンボルテーブルと再配置情報を削除した場合の影響?
これは実行ファイルの機能に影響を及ぼしますか?実行するオペレーティングシステムによってはASLRが必要ですか?そうでない場合は、なぜそれらを最初から守っていますか?
少し詳細上記の概要が役立ちます。
gcc -s
とUnix strip
実行ファイルからすべてのシンボルテーブルと再配置情報を削除します(サイズを小さくする)。実行ファイルからすべてのシンボルテーブルと再配置情報を削除した場合の影響?
これは実行ファイルの機能に影響を及ぼしますか?実行するオペレーティングシステムによってはASLRが必要ですか?そうでない場合は、なぜそれらを最初から守っていますか?
少し詳細上記の概要が役立ちます。
再配置情報を削除するとASLRが妨げられることは明らかです。
しかし、私はいくつかのシステムでman strip
を見てきましたが、strip
は再配置情報を削除することを示唆していません。これは、主にデバッグシンボルの削除に関するものです。
あなたはそこにあります。他方、 'gcc -s'は再配置情報をバイナリに追加しません。再配置テーブルは重要でなければなりませんか? ELFがローディング時にそれを使用することを考慮してください。 –
最近の「ストリップ」が再配置情報を削除するかどうかはわかりません。そうでないと思いますか? – NPE
@NPE 'gcc -s
[この質問](http://stackoverflow.com/questions/2463150/fpie-position-independent-executable-option-gcc-ld)を参照してください。 fPIE(およびfPIC)コードは、その場所をハードコードする必要がないため、再配置情報は必要ありません。 –