Действия происходят в драйвере. Имеется идентификатор процесса, нужно получить его же хендл Код (Text): get_handle_by_id proc uses ebx ProcessId:dword LOCAL hProcess :dword LOCAL oa :OBJECT_ATTRIBUTES LOCAL cid :CLIENT_ID xor ebx,ebx mov eax,ProcessId mov hProcess,eax mov cid.UniqueProcess,eax mov cid.UniqueThread,ebx invoke ZwOpenProcess,addr hProcess,1,addr oa,addr cid .if eax==STATUS_SUCCESS mov ebx,hProcess invoke ZwClose,hProcess .endif mov eax,ebx ret get_handle_by_id endp Данный код работать не хочет, есть ли другие способы получить хендл, не прибегая в ZwOpenProcess? Ну и прошу объяснить почему не работает код.
Сначала надо инициализировать структуру oa InitializeObjectAttributes addr oa, NULL, OBJ_CASE_INSENSITIVE, NULL, NULL
Аха, моно ещё так: Код (Text): lea ecx,oa mov dword ptr [ecx],000000018h and dword ptr [ecx+000000004h],0 mov dword ptr [ecx+00000000Ch],00000040h and dword ptr [ecx+000000010h],0 and dword ptr [ecx+000000008h],0 and dword ptr [ecx+000000014h],0 или даже так: Код (Text): sub esp,6*4 mov ecx,esp p.s. cresta, справился с проблемой kill-process'a ?