1

私は C および C++ プログラミングに比較的慣れていませんが、共有ライブラリからシンボルを読み込んで呼び出すことができる場合 (バイナリのようにコンパイルおよびリンクされていることを理解しています)、別の [実行可能] バイナリからシンボルを読み込むことも可能ですか?実行時間中?

Linux 上の GCC でこれを行うことに特に興味があります。

4

2 に答える 2

2

Windows でプログラミングしている場合

  1. 共有ライブラリを現在のプロセスにロードするLoadLibrary
  2. 呼び出す関数のアドレスを取得するGetProcAddress

Oses のような UNIX では。dlopendlsymのようなもの

6.6の dlsym ルックの例。ファイル demo_dynamic.c

于 2011-11-10T03:22:35.843 に答える
1

理論的には、バイナリからオブジェクトを取り出して、それに対して (静的または動的に) リンクできるはずですが、バイナリ構造を調べる必要があります。最新の Linux システムはすべて ELF バイナリを使用しているため、これは簡単に実行できます。これは十分に文書化されています。ウィキペディアの記事から始めて、そこから進むことをお勧めします。

于 2011-11-10T07:34:39.207 に答える