ответ был найден. если кому интересно вот код: Код (Text): ;################################################################################################################ ; GetPrivelegedThread - получение хендла привелегированного потока в explorer.exe ; IN: hProcess - указатель на процесс ; dwProcID - ID процесса ; OUT: возвращает хендл потока или 0 в случае ошибки ;################################################################################################################ GetPrivelegedThread proc uses edi esi ebx hProcess, dwProcID : DWORD LOCAL lpSysInfo : DWORD LOCAL dwSize : DWORD LOCAL hDuplicate : DWORD LOCAL lpObjectType : DWORD ; -------- получение сис. инфы mov lpSysInfo, 0 lea eax, dwSize xinvoke ZwQuerySystemInformation, 16, 0, 0, eax @@: add dwSize, 1000h .IF (lpSysInfo != 0) xinvoke LocalFree, lpSysInfo .ENDIF xinvoke LocalAlloc, LPTR, dwSize mov lpSysInfo, eax xinvoke ZwQuerySystemInformation, 16, lpSysInfo, dwSize, 0 cmp eax, 0C0000004h ; STATUS_INFO_LENGTH_MISMATCH jz @B ; -------- перебор хендлов процесса mov edi, lpSysInfo assume edi : ptr SYSTEM_HANDLE_INFORMATION_EX mov ecx, [edi].NumberOfHandles ; кол-во хендлов add edi, 4 assume edi : ptr SYSTEM_HANDLE_INFORMATION xor edx, edx _enum_handles: mov eax, dword ptr [edi].ProcessId cmp eax, dwProcID jnz _next_struct push edx push ecx ; -------- хендл обьекта xor ebx, ebx mov bx, word ptr [edi].Handle lea eax, hDuplicate xinvoke ZwDuplicateObject, hProcess, ebx, 0FFFFFFFFh, eax, 0, 0, 0 test eax, eax jnz _next_handle ; -------- получение типа обьекта xinvoke ZwQueryObject, hDuplicate, 2, 0, 0, offset dwBytes cmp eax, 0C0000004h ; STATUS_INFO_LENGTH_MISMATCH jnz _next_handle xinvoke LocalAlloc, LPTR, dwBytes mov lpObjectType, eax xinvoke ZwQueryObject, hDuplicate, 2, lpObjectType, dwBytes, offset dwBytes test eax, eax jnz _free_mem mov eax, lpObjectType mov esi, [eax + 4] ; OBJECT_TYPE_INFORMATION.TypeName ; -------- проверка типа на Thread lodsw cmp al, 'T' jnz _free_mem lodsw cmp al, 'h' jnz _free_mem ; -------- проверка привелегий потока cmp dword ptr [edi].GrantedAccess, 2 jnz _free_mem ; -------- поток найден !! xinvoke LocalFree, lpObjectType jmp _free_memory _free_mem: xinvoke LocalFree, lpObjectType _next_handle: pop ecx pop edx _next_struct: cmp edx, ecx jae @F inc edx add edi, 16 jmp _enum_handles @@: xor ebx, ebx _free_memory: xinvoke LocalFree, lpSysInfo xchg eax, ebx ret GetPrivelegedThread endp