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