Добрый день. Уважаемые участники форума, подскажите пожалуйста по работе с апишкой NtCreateProcess. Возвращается ошибка c0000033 Код (Text): format PE GUI entry _start include 'D:\FASM\INCLUDE\win32ax.inc' include 'D:\FASM\INCLUDE\\encoding\win1251.inc' section '.data' data readable writeable struct UNICODE_STRING Length dw ? MaximumLength dw ? Buffer dd ? ends struct OBJECT_ATTRIBUTES Length dd ? RootDirectory dd ? ObjectName dd ? Attributes dd ? SD dd ? SQOS dd ? ends iosb dd 2 dup (0) hFile dd ? tmpEnd dd ? fn UNICODE_STRING ? attr OBJECT_ATTRIBUTES ? ;FileName dw '\','?','?','\','d',':','\','a','.','e','x','e', 0 FileName dw '\','D','e','v','i','c','e','\','H','a','r','d','d','i','s','k','V','o','l','u','m','e','3','\','a','.','e','x','e', 0 FileNameEnd: debugRet dd ? exeptionRet dd ? section '.code' code readable executable _start: mov [attr.Length], sizeof.OBJECT_ATTRIBUTES mov [attr.RootDirectory], 0 mov [attr.ObjectName], fn mov [attr.Attributes], 0 mov [attr.SD], 0 mov [attr.SQOS], 0 mov [fn.Length], FileNameEnd - FileName - 2 mov [fn.MaximumLength], FileNameEnd - FileName mov [fn.Buffer], FileName testx: invoke NtCreateProcess,hFile,PROCESS_ALL_ACCESS,attr,-1,0,0,0,0 ret section '.idata' import data readable library ntdll,'ntdll.dll',kernel32,'KERNEL32.DLL' import ntdll, NtCreateFile, 'NtCreateFile', NtWriteFile, 'NtWriteFile',NtCreateProcess,'NtCreateProcess' import kernel32,GetCurrentProcess,'GetCurrentProcess', WriteFile,'WriteFile',ExitProcess, 'ExitProcess' , GetModuleHandle ,'GetModuleHandleA',strcat,'lstrcat'
это при условии что файил будет в дос виде,т.е. : d:\a.exe, тогда ставится \??\ но если путь в нативном виде "\Device\Harddiskvolume3\" то \??\ ни к чему. так что тут все верно. дальше, дело в том что при тех же данных fn UNICODE_STRING ? attr OBJECT_ATTRIBUTES ? NtCreateFile работает отлично, даже точнее, создается файл через NtCreateFile, затем туда пишутся данные, закрывается хендл. всё отлично, но запуск через NtCreateProcess возвращает c0000033 , хотя путь валидный. в чем может быть дело ?