2009-07-16 12 views
5

Windows NTプラットフォーム(XP-W7)でカーネルモードからユーザーモードプロセスを作成する方法はありますか?ドライバからプロセスを作成する

EDIT:ドライバのみをインストールする必要があります。これはプロジェクトの特有のものです。

+0

私は自分のユーザーモードコードをスレッドに挿入することを考えています... –

+0

http://www.codeproject.com/KB/system/KernelExec.aspxを見てください。面白い... –

答えて

5

有効なwin32プロセスを作成するには、ドライバーはCSRSS(完全に文書化されていないもの)と通信する必要があります。だから私はユーザーモードのAPCをキューに入れ、既存のwin32プロセス(そのコードはCreateProcessを呼び出してジョブを実行する)のコンテキストでAPCコードの仮想メモリを割り当てます。

これは難しい方法ですが、機能します。

2

これを達成するための簡単な方法はわかりません。しかし、重複したDeviceIoControlをドライバに適用するWindowsサービスを実行するとどうなりますか?返却時に、サービスはドライバから受信したデータを調べ、対応するアプリケーションを開始することができます。

+1

これは正しい解決策だと思います。サービスから逆IRPを発行し、開始するためにユーザーモードプロセスが必要なときにドライバを完了させます。 –

+0

提案していただきありがとうございますが、私のサービスを稼働させることはできません(サービスのみがカーネルモードからインストールされ起動されている場合)。 –

+0

@Sergius:とにかくドライバをインストールする必要があります。同じINFファイルを使用してサービスをインストールできます。 –

0

これは直接行うことはできません - Win32プロセスを作成するには、カーネルモードでプロセスオブジェクトを作成するだけでなく、CreateProcessのユーザーモード部分でいくつかの設定が必要です。

ユーザーモードアプリケーションを起動するには、サービス、デスクトップアプリケーションなどのユーザーモードコードが必要です。

関連する問題