メモリ バッファからの CreateProcess
質問:
の内容に対して CreateProcess を呼び出すことはできますか?ファイルに書き込まずにメモリ バッファに保存された EXE最初?
背景:
ゲームクラッシュのパッチ適用における DRM の遅延を回避するために、外部ファイル内から実際の EXE を復号化して起動する方法が模索されています。 EXE.
答え:
CreateProcess は、EXE を含むメモリ バッファ上で実際に呼び出すことができ、事前のファイル書き込みなしで実行できます。この手順には次のものが含まれます。
- CREATE_SUSPENDED フラグを指定した CreateProcess を使用してプロセスを一時停止します。
- GetThreadContext を使用して、[EBX 8] に保存されている PEB の ImageBaseAddress を使用してスレッド コンテキストを取得します。
- 一時停止されたプロセスのベースアドレスとイメージサイズを比較し、メモリ内 EXE。
- 条件が許せば、WriteProcessMemory を使用して、メモリ内 EXE を一時停止されたプロセスのメモリに書き込みます。
- 元のイメージのマッピングを解除し、一時停止されたプロセスにメモリを割り当て、メモリ内 EXE を書き込みます。 -memory EXE (条件が許可されない場合)。
- スレッド内のベース アドレスとエントリ ポイントにパッチを適用するcontext.
- ResumeThread を使用して中断されたプロセスを再開します。
以上がCreateProcess は、EXE をファイルに保存せずにメモリから直接実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。