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

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

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

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 の書き込み。
  6. スレッド コンテキストのベース アドレスとエントリ ポイントにパッチを適用します。
  7. ResumeThread.
を使用して一時停止されたプロセス

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

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