ホームページ >バックエンド開発 >C++ >CreateProcess は、EXE をファイルに保存せずにメモリから直接実行できますか?

CreateProcess は、EXE をファイルに保存せずにメモリから直接実行できますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 13:05:02486ブラウズ

Can CreateProcess Execute an EXE Directly from Memory Without Saving It to a File?

メモリ バッファからの CreateProcess

質問:

の内容に対して CreateProcess を呼び出すことはできますか?ファイルに書き込まずにメモリ バッファに保存された EXE最初?

背景:

ゲームクラッシュのパッチ適用における DRM の遅延を回避するために、外部ファイル内から実際の EXE を復号化して起動する方法が模索されています。 EXE.

答え:

CreateProcess は、EXE を含むメモリ バッファ上で実際に呼び出すことができ、事前のファイル書き込みなしで実行できます。この手順には次のものが含まれます。

  1. CREATE_SUSPENDED フラグを指定した CreateProcess を使用してプロセスを一時停止します。
  2. GetThreadContext を使用して、[EBX 8] に保存されている PEB の ImageBaseAddress を使用してスレッド コンテキストを取得します。
  3. 一時停止されたプロセスのベースアドレスとイメージサイズを比較し、メモリ内 EXE。
  4. 条件が許せば、WriteProcessMemory を使用して、メモリ内 EXE を一時停止されたプロセスのメモリに書き込みます。
  5. 元のイメージのマッピングを解除し、一時停止されたプロセスにメモリを割り当て、メモリ内 EXE を書き込みます。 -memory EXE (条件が許可されない場合)。
  6. スレッド内のベース アドレスとエントリ ポイントにパッチを適用するcontext.
  7. ResumeThread を使用して中断されたプロセスを再開します。

以上がCreateProcess は、EXE をファイルに保存せずにメモリから直接実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。