ヒープ空間でコードを実行できますか?

ヒープ空間でコードを実行できますか?

ヒープスペース内のコードスニペットを実行できるかどうかを知りたいです。

ベストアンサー1

おそらく。ヒープが実行可能な場合は、そのコードに分岐できます。しかし、一部のUnixバリアントではヒープスペースは実行可能ではありません。そのため、バッファオーバーフローなどの一部のセキュリティ脆弱性を悪用することがより困難になります(プログラムにコードを挿入してもプログラムに分岐できない可能性があります)。 (UNIX バリアントとその構成の説明については、リンクされた記事を参照してください。) また、一部のプロセッサー・アーキテクチャーではコードとデータは別々にキャッシュされます。したがって、キャッシュフラッシュコマンドを実行する必要があるかもしれません。おおむねこれは手動でやりたいことではありません。

ロードされたコードを実行可能にするタスクを実行するコードをロードおよび実行するための標準のUnix APIがあります。落とす。コードはファイルからロードする必要があります。

タイムリーなコンパイラ通常、dlopenよりも高速なインターフェイスを見つけようとします。コードの実行可能性を確保するには、高度にプラットフォーム依存のアプローチを管理する必要があります。

編集:ありがとうブルース・エディガーキャッシュを更新する必要があることを思い出させます。

おすすめ記事