2

言って、私は変更したいmmap。そのため、その目的のために新しい共有オブジェクト ファイルを作成し、LD_PRELOAD を使用して、元の の代わりにそれを使用しますmmap。ただし、プログラム ファイルである変数を参照する必要があります。どうやってやるの?弱い参照についてどこかで読みました。それがその方法ですか。extern共有ライブラリをプログラムとは別にコンパイルするため、使用できないと思います。これに関するアドバイスはありますか?

第二に、あなたのコードでLD_PRELOADの使用にのみ影響しますか、それともコードが利用する標準ライブラリ内から呼び出されますか?mmapmmaplibc.so

4

1 に答える 1

2

Usingは、動的に配置する必要がある関数LD_PRELOAD呼び出しに影響を与えます。これは、それが独自のコード内にあるか、コードによってロードされた共有ライブラリ内にあるかに関係ありません。シンボルを見つけている場所を正確に確認するために使用できます。を見てみましょう:LD_DEBUG

$ LD_DEBUG=help ls

これにより、使用可能なデバッグ オプションが表示されます。lsここには、動的にリンクされた実行可能ファイルが含まれる可能性があることに注意してください。

あなたの質問の最初の部分については完全にはわかりません。dlsym()変数を検索するために使用してみましたか?

于 2012-05-21T15:58:23.400 に答える