2011-12-14 7 views
1

私はいくつかのスタックスマッシング保護シナリオを有効にするために、GCC 3.4.3コンパイラでオプション-fstack-protector-allを設定しようとしています。しかし、これでコンパイルすると、
エラーが発生します。認識できないコマンドラインオプション "-fstack-protector-all" 。だから、このオプションはGCC 3.4.3では実装されていないようですね??または私は何かを逃している?GCC 3.4.3の代替オプション-fstack-protector-all?

これは古いGCCコンパイラでは実装されていない場合は、これに/最も簡単な代替手段は何ですか?

Cコード自体にスタック・スマッシング・プロテクターを実装するための有用なコード・パターンですか?

おかげ

+2

GCC 3.4.3は7歳以上です。アップグレードしたときです。 – TonyK

+0

GCC4と互換性のないいくつかのベンダーのライブラリを使用しているため、私たちはできません... –

+2

あなたはそれを支払っていますか?彼らが現在の製品に適応する時間でしょうか。 –

答えて

0

あなたは、この特定のスマッシュの保護を提供することができているようだgccのバージョンオフ唯一のマイナーバージョンであるように見えます。

http://www.research.ibm.com/trl/projects/security/ssp/

をたぶんあなたがその1(1つのマイナー番号まで)にアップグレードすることができ、まだあなたのベンダーとの互換性:グーグルとき、私はこれを見つけましたか?

さらに、カナリアン値はgccでデフォルトに設定されています(あなたが言及しているオプションを使用する必要はありません)。単純なプログラムの逆アセンブリを見ましたか?スタックの終わり近くに(gs)の場所からいくつかの格納/ロードを見ると、すでに実装されています。

+0

Oups。それがx86 Linuxに実装されている方法です。しかし、おそらくARMの保護されたメモリ領域と同じようにコピーすることになります。 – gnometorule

+0

デフォルトのスマッシング保護の設定について - デフォルトでは_SOME_システムで有効になっていますが、すべてではありません。たとえば、Linux MintではSSPが無効になっています。 –