Ring3 и (NT/ZWOpenFile)

Тема в разделе "WASM.WIN32", создана пользователем seeQ, 9 окт 2006.

  1. seeQ

    seeQ New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2003
    Сообщения:
    71
    Всем добрый день.
    Коротко изложу прблему. Пишется некий shell код, который должен работать минуя kernel32. Код должен работать с неким файлом(lXlog.txt), который уже создан. Все бы хорощо, но никак не получается открыть файл. Ниже приведен код, после call [EBP+_ZwOpenFile] eax==80000002h. Все выполняется в Ring3. В чем может быть ошибка?

    Код (Text):
    1. jmp strrr
    2. ;=================================================================================
    3. oa OBJECT_ATTRIBUTES <>
    4. iosb IO_STATUS_BLOCK <>
    5. Unicode_Length          dw  0012h
    6. Unicode_MaximumLength       dw  0012h
    7. Unicode_Buff            dd ?
    8. logg2               dw  "l", "X", "l", "o", "g", ".", "t", "x", "t", 0
    9. ;=================================================================================
    10.  
    11. strrr:
    12.  
    13.     lea eax, [ebp+oa]
    14.     lea ebx, [ebp+logg2]
    15.     mov dword ptr [ebp+Unicode_Buff],ebx
    16.     lea ebx, [ebp+Unicode_Length]
    17.    
    18.     InitializeObjectAttributes eax, ebx, OBJ_CASE_INSENSITIVE , NULL, NULL
    19.    
    20.     push FILE_SYNCHRONOUS_IO_NONALERT
    21.     push FILE_SHARE_READ
    22.     lea eax, [ebp+iosb]
    23.     push eax
    24.     lea eax, [ebp+oa]
    25.     push eax
    26.     push GENERIC_READ + SYNCHRONIZE
    27.     lea eax,[EBP+FHand]
    28.     push eax
    29.     call [EBP+_ZwOpenFile]
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
     
  3. seeQ

    seeQ New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2003
    Сообщения:
    71
    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
    Но я так ине понял, как он ее решил. Может кто объяснит??
     
  4. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    расставь align 4
     
  5. seeQ

    seeQ New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2003
    Сообщения:
    71
    ммм... не догоняю
    Вот так?
    align 4
    call [EBP+_ZwOpenSection]
    Тогда получаю STATUS_OBJECT_PATH_SYNTAX_BAD equ 0C000003Bh