メモリからのバイナリの実行
ソフトウェア エンジニアリングの領域では、メモリからバイナリを直接実行すると有利なシナリオによく遭遇します。この偉業を達成する方法を詳しく見てみましょう。
前提条件:
コンパイル中に非常に一般的な、バイナリが変数に格納される状況を考えてみましょう。次のようなバイト配列があります:
[]byte{'s','o','m','e',' ','b','y','t','e','s'}
私たちの目標は、このバイナリをプログラム内で実行し、ディスクに書き戻したり、exec や fork などの外部コマンドを使用したりする必要を回避することです。
解決策:
Linux を例として使用すると、メモリ領域を操作して、 アドバンテージ。 mprotect() システム コールを使用すると、メモリ領域の保護を変更できます。具体的には、データ領域からコード領域に変更できます。これにより、メモリからコードを直接実行できるようになります。
メモリ領域が再保護されたら、そこにジャンプしてバイナリを実行できます。
以上がLinux でメモリからバイナリを直接実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。