オブジェクトファイル(msvcコンパイラによって単一のソースファイルから生成されたもの)をロードするステップは何ですか?私のプログラムのメモリにロードしてください例)、内部でコードを実行します。実行するオブジェクトファイルの動的ロード
私は大量のプログラムをロードするのに時間がかかり、ソースコードからリアルタイム修正を行いたいというケースがあります。オブジェクトファイルをロードするだけでなく、このオブジェクトファイル内のいくつかのアドレスを修正し、-hotpatch関数を使用して、すでに実行中のプロセスでコールをインターセプトし、オブジェクトファイルにリダイレクトします。
オブジェクトファイルのインポートテーブルを解決して、すでにロードされているプログラムを指すようにして、変更された関数の呼び出しを代行する必要があります。
何か不足していますか?私はそれが不可能かもしれない何かに時間を無駄にしようとする前に尋ねたいと思います!
ありがとうございます!
私の理解は、オブジェクトファイルは中間表現であり、必ずしも実行可能ではないということです。オブジェクトファイルには、リンカによって解決される未解決のシンボルが含まれている場合があります。オブジェクト・ファイルを静的または動的ライブラリーと混同していますか? –
ダイナミックライブラリを使用する必要があります。オペレーティングシステムは、オンデマンドで、または起動時にこれらをプログラムにロードできます。ライブラリには実行可能コードが含まれており、一般的に未解決の外部参照はありません。 –
実際には、すでにロードされているプログラム内のアドレスへの参照を解決したいのです。私は実行可能ファイル全体を再リンクしたくありません。そして、私はLoadLibrary関数を使いたくありません。 – GuillaumeGwi