Всем добрый день. Коротко изложу прблему. Пишется некий shell код, который должен работать минуя kernel32. Код должен работать с неким файлом(lXlog.txt), который уже создан. Все бы хорощо, но никак не получается открыть файл. Ниже приведен код, после call [EBP+_ZwOpenFile] eax==80000002h. Все выполняется в Ring3. В чем может быть ошибка? Код (Text): jmp strrr ;================================================================================= oa OBJECT_ATTRIBUTES <> iosb IO_STATUS_BLOCK <> Unicode_Length dw 0012h Unicode_MaximumLength dw 0012h Unicode_Buff dd ? logg2 dw "l", "X", "l", "o", "g", ".", "t", "x", "t", 0 ;================================================================================= strrr: lea eax, [ebp+oa] lea ebx, [ebp+logg2] mov dword ptr [ebp+Unicode_Buff],ebx lea ebx, [ebp+Unicode_Length] InitializeObjectAttributes eax, ebx, OBJ_CASE_INSENSITIVE , NULL, NULL push FILE_SYNCHRONOUS_IO_NONALERT push FILE_SHARE_READ lea eax, [ebp+iosb] push eax lea eax, [ebp+oa] push eax push GENERIC_READ + SYNCHRONIZE lea eax,[EBP+FHand] push eax call [EBP+_ZwOpenFile]
2n0name Это мне мало чем помогло. Так как, решение так и не было найдено, я отказался от CreateFile. Пробовал через MMF, та же херня (STATUS_DATATYPE_MISALIGNMENT). jmp strrr ;================================================================================= oa OBJECT_ATTRIBUTES <> Unicode2_Length dw 0012h Unicode2_MaximumLength dw 0014h Unicode2_Buff dd 0 logg3 dw "m", "m", "f", "_", "s", "h", "a", "r", "e", 0 ;================================================================================= strrr: lea eax, [ebp+oa] mov (OBJECT_ATTRIBUTES ptr [eax])._Length,sizeof(OBJECT_ATTRIBUTES) mov (OBJECT_ATTRIBUTES ptr [eax]).RootDirectory,0 lea ebx, [ebp+logg3] mov dword ptr [ebp+Unicode2_Buff],ebx lea ebx, [ebp+Unicode2_Length] mov (OBJECT_ATTRIBUTES ptr [eax]).ObjectName,ebx mov (OBJECT_ATTRIBUTES ptr [eax]).Attributes,OBJ_CASE_INSENSITIVE mov (OBJECT_ATTRIBUTES ptr [eax]).SecurityDescriptor,NULL mov (OBJECT_ATTRIBUTES ptr [eax]).SecurityQualityOfService,NULL push eax push SECTION_MAP_WRITE lea eax,[EBP+FHand] push eax call [EBP+_ZwOpenSection] Здесь такая же проблема: http://www.masm32.com/board/index.php?topic=790.0 Но я так ине понял, как он ее решил. Может кто объяснит??
ммм... не догоняю Вот так? align 4 call [EBP+_ZwOpenSection] Тогда получаю STATUS_OBJECT_PATH_SYNTAX_BAD equ 0C000003Bh