2

私はモニタープロセスの基本的なドライバーを書き、プロセスパスを取得しようとしています。を使用してプロセス情報を
作成および取得します が、関数で を使用して現在のプロセスを取得しようとすると、別のプロセスを実行する現在のプロセスが得られます。 PsSetCreateProcessNotifyRoutineZwQueryInformationProcess
ProcessCallbackHANDLENtCurrentProcess

例えば:

myProgram.exe を c:\ で実行しようとすると、Windows エクスプローラーを使用して C:\ に移動し、myProgram.exe を実行すると、myProgram.exe が explorer.exe 内で実行されるため、ドライバーが explorer.exe パスを提供します。

ProcessCallback ヘッダーに processID があります

void ProcessCallback(
    IN HANDLE  hParentId, 
    IN HANDLE  hProcessId, 
    IN BOOLEAN bCreate
    )  

プロセスハンドルに変換できますか?

4

1 に答える 1

1

役に立つコメントをありがとう、最終的に私は以下のコードで私の問題を解決します

HANDLE proc = NULL;
OBJECT_ATTRIBUTES obj_attr;
CLIENT_ID cid;

cid.UniqueProcess= hProcessId; //PsGetCurrentProcessId();
cid.UniqueThread= NULL ; //(HANDLE)0;
InitializeObjectAttributes(&obj_attr,NULL, 0, NULL, NULL);
ZwOpenProcess(&proc, PROCESS_ALL_ACCESS, &obj_attr, &cid);
于 2014-09-09T07:35:01.027 に答える