По мотивам Ms Rem: a-la OpenProcessEx Код (Text): OpenProcessEx proc uses ebx dwProcessId: DWORD, idCSRSS:DWORD LOCAL ProcessInfo :PROCESS_BASIC_INFORMATION LOCAL hCSRSS :DWORD LOCAL dupHandle :DWORD LOCAL cnt :DWORD LOCAL result :DWORD LOCAL curHandle :DWORD LOCAL curPID :DWORD mov result,0 invoke GetCurrentProcessId mov curPID,eax invoke OpenProcess, PROCESS_DUP_HANDLE, FALSE, curPID mov curHandle,eax invoke OpenProcess, PROCESS_DUP_HANDLE, FALSE, idCSRSS mov hCSRSS,eax test eax,eax jz _ret invoke GetInfoTable, SystemHandleInformation test eax,eax jz _ret mov ebx,eax assume ebx : ptr SYSTEM_HANDLE_INFORMATION_EX mov cnt,0 _loop: mov eax,cnt mov ecx,sizeof (SYSTEM_HANDLE_INFORMATION) mul ecx lea edx,[ebx+eax+4] assume edx : ptr SYSTEM_HANDLE_INFORMATION cmp [edx].ObjectTypeNumber,5 jne @F mov eax,[edx].ProcessId cmp eax, idCSRSS jne @F invoke DuplicateHandle, hCSRSS, [edx].Handle, curHandle, addr dupHandle, NULL, FALSE, DUPLICATE_SAME_ACCESS .if (eax) invoke ZwQueryInformationProcess, dupHandle, ProcessBasicInformation, addr ProcessInfo, sizeof(PROCESS_BASIC_INFORMATION), 0 mov eax,dwProcessId .if (eax==ProcessInfo.UniqueProcessId) invoke VirtualFree, ebx, 0, MEM_RELEASE invoke CloseHandle, hCSRSS invoke CloseHandle, curHandle mov eax,dupHandle ret .else invoke CloseHandle, dupHandle .endif .endif @@: inc cnt mov eax,[ebx].NumberOfHandles cmp cnt,eax jl _loop invoke VirtualFree, ebx, 0, MEM_RELEASE invoke CloseHandle, hCSRSS invoke CloseHandle, curHandle _ret: mov eax,result ret OpenProcessEx endp На вызов DuplicateHandle выдаёт ноль и GetLastError=Неверная попытка доступа к адресу памяти Какой параметр неверный - не найду никак Единственный адрес памяти, передаваемый в ф-цию - addr dupHandle (на стеке). Что в нем неверного?