これは少し奇妙な問題です。ファイルからの動的バイナリ
私は、特定のプラットフォームで実行されているC++コードがあります。このコードの唯一の目的は、バイナリ、NATIVEを含むファイルをそのプラットフォームに実行することです。
今、私の質問です - どのように私は、このデータが実行部分になるように私のコードを実行しているマシンのメモリに、これらのファイルからのデータを取得することができますか? ?
つまり、私は命令ポインタを指すことができるどこかにデータを得ることができますか?
はいの場合はどうですか?
私はこのためにアセンブラを使用する必要はありません - それだけで動作するようになります。
編集:申し訳ありませんが、私は十分ではありませんでした。
基本的には、ロードするファイルデータは、.exe、Mach-O実行可能ファイルまたはELFのような形式ではありません。これは生のバイナリデータです(私のコードで削除されたカスタムヘッダー付き)。このバイナリデータは、特定のマシンコードであり、現在のマシン上で実行されているプロセッサに適しています。
これは技術的には、通常のOSエグゼキュータを参照してバイナリを直接ロードしたいということです。私はそれを解釈することができますが、それは最高でも3倍ほど遅くなります。
別の子プロセスでデータを実行する必要がある場合は気になりませんが、データがOSが自動的に実行できる形式ではないため、通常のプロセスオープナーを使用できません(やはり、 .exe、Mach-O、ELFのように)。
実行すると別のバイナリを実行する場合、 'fork()'と 'system()'には何が問題なのですか? – Nim
あなたはあなたの目標について何も言わないが、これは非常にターゲットに依存する。 – AProgrammer
世界では、実行するバイナリチャンクを取得していますが、言語やプラットフォームはありません。 – Mordachai