2012-01-22 10 views
2

私のWindows XP/7プログラムは、Windows APIのCreateProcess()関数を操作の一部として使用して、子プロセスを起動します。私はアプリケーションを「サンドボックス」することができるようにしたいのですが、1つの特定の方法だけです。私は、子プロセスがそれ自身のプロセス(孫)を生成させることを望まない。どのようなフックやDLLの注入(またはIATのパッチ)を行うことなくこれを行う方法はありますか?子プロセスの生成からプロセスを生成するのを防ぐにはどうすればよいですか?

私は、プロセスのセキュリティとアクセス権でこのMSDNのページを見た:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx

私は、次のプロセスに特定のアクセス権を気づい:

PROCESS_CREATE_PROCESS (0x0080) Required to create a process. 

私は中断して、子プロセスを起動でしたXOR操作でそのアクセス権を削除し、SetSecurityDescriptor()で子プロセスのアクセス権を更新し、それを再開して自身の子プロセスを作成しないようにします。それとも、代わりにディスク上のEXEファイルに適用する必要がありますか?これは効果がありますか?

もしそうなら、SetSecurityDescriptor()を使って良いコードサンプルを読んでいただければ幸いです。このアプローチがうまくいかない場合、あなたが持っている可能性のあるアイデアやヒントは高く評価されます。

答えて

7

あなたは仕事中のプロセスに制限を設定するJob objectsを使用することができます。JOBOBJECT_BASIC_LIMIT_INFORMATION .ActiveProcessLimit

+0

ありがとう@Andersを。コードサンプルを見つけたら、教えてください。 –

+1

@RobertOschlerジョブの処理には必要ないポート補完を除いて、ジョブオブジェクトの処理は簡単です。ジョブオブジェクトを作成し、制限を設定し、中断したプロセスを作成し、このプロセスをジョブに追加してから再開しますそれ... – Anders

+1

私はこのマシン上にコンパイラを持っていませんが、http://pastebin.com/8EntStEuのようなものでなければなりません – Anders

関連する問題