私は比較的CやC++プログラミングに慣れていませんが、共有ライブラリからシンボルをロードして呼び出すことができれば(バイナリのようにコンパイルしてリンクしていると理解しています)、実行時に別の[実行可能な]バイナリからシンボルをロードしますか?他のバイナリからシンボルをロードする
私はLinuxでGCCを使ってこれを行うことに特に関心があります。
私は比較的CやC++プログラミングに慣れていませんが、共有ライブラリからシンボルをロードして呼び出すことができれば(バイナリのようにコンパイルしてリンクしていると理解しています)、実行時に別の[実行可能な]バイナリからシンボルをロードしますか?他のバイナリからシンボルをロードする
私はLinuxでGCCを使ってこれを行うことに特に関心があります。
理論的には、バイナリからオブジェクトを取り出し、それに対して(静的または動的に)リンクすることができますが、バイナリ構造を調べる必要があります。現代のLinuxシステムはすべてELFバイナリを使用しているので、これは簡単に実行できます。 wikipedia articleから始め、そこから行くことを提案してください。
あなたは、UNIXなどに
を呼び出したい関数のアドレスを取得するには、現在のプロセス
An example of dlsym 6.6を探します。ファイルdemo_dynamic.c
これは私にとって素晴らしいスタートです。ありがとうございます! – andyortlieb