2

私は一般的なプログラム メモリ レイアウト (つまり、テキスト セグメント、データ セグメント、ヒープ、スタックなど) に精通しており、次の説明と図に似たものを見つけようとしています。

http://www.tenouk.com/Bufferoverflowc/Bufferoverflow1c.html

ただし、それぞれが外部ライブラリの使用を伴う 3 つの異なるケースを見つけようとしています。

  1. ビルド時の外部ライブラリの静的リンク (つまりlibtest.a、 内ldflags)
  2. ビルド時の外部ライブラリの動的リンク (つまりlibtest.so、 内ldflags)
  3. 実行時の外部ライブラリの動的リンケージ (つまり:libtest.so ではなくldflags、ライブラリはdlopen()/dlsym()呼び出しを介してロードされます)

これに詳しい人がメモリレイアウトを説明してくれますか? 私が特に興味を持っているのは、 case(2)(3).

ありがとうございました。

4

1 に答える 1

1

Solaris Linker Guide ( http://docs.oracle.com/cd/E26502_01/html/E26507/index.html ) は非常によく書かれており、非常に複雑なユーティリティを説明するのに非常に役立ちます。

図に関しては、 http://docs.oracle.com/cd/E26502_01/html/E26507/chapter6-93046.html#scrolltochttp://docs.oracle.com/cd/E26502_01/htmlで見つけることができます/E26507/chapter6-34713.html#scrolltocをご覧ください。

于 2014-02-12T03:18:22.813 に答える