Не получается открыть ссылку по ZwOpenSymbolicLinkObject. Как правильно заполнить OBJECT_ATTRIBUTES? DATA segment dword public use32 'DATA' link_h dd ? object_attributes OBJECT_ATTRIBUTES <?> file_name dw '\','?','?','\','c',':' file_name2 dd 6 dd 6 dd offset file_name DATA ends CODE segment dword public use32 'CODE' _start: mov [object_attributes._Length_],24 mov [object_attributes.ObjectName],offset file_name2 push offset object_attributes push GENERIC_READ push offset link_h call __imp__ZwOpenSymbolicLinkObject@12 Выдаёт ошибку 80000002h (STATUS_DATATYPE_MISALIGNMENT?) Может структуру не правильно вбил? : OBJECT_ATTRIBUTES struc _Length_ dd ? RootDirectory dd ? ObjectName dd ? Attributes dd ? SecurityDescriptor dd ? SecurityQualityOfService dd ? OBJECT_ATTRIBUTES ends
Не ожидал, но помогло. Теперь выдаёт ошибку 0с0000005h (STATUS_ACCESS_VIOLATION). Нет прав на доступ? С путём что-то не так?
вот рабочий код на masm Код (Text): Start proc Local Handle:HANDLE Local ObjAttr:OBJECT_ATTRIBUTES Local UniName:UNICODE_STRING lea edx,pName invoke RtlCreateUnicodeStringFromAsciiz, addr UniName, edx test eax,eax jz exit_ lea edx,UniName xor eax,eax mov ObjAttr.uLength,SizeOf OBJECT_ATTRIBUTES mov ObjAttr.hRootDirectory,eax mov ObjAttr.pSecurityDescriptor,eax mov ObjAttr.pSecurityQualityOfService,eax mov ObjAttr.uAttributes,eax mov ObjAttr.pObjectName,edx invoke ZwOpenSymbolicLinkObject, addr Handle, SYMBOLIC_LINK_QUERY, addr ObjAttr exit_: ret pName CHAR "\??\C:",0 Start endp