NtProtectMemory иногда возвращает 0xC0000018

Тема в разделе "WASM.WIN32", создана пользователем M0rg0t, 20 дек 2020.

  1. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Столкнулся со странной ошибкой. Иногда вызов NtProtectVirtualMemory возвращает ошибку STATUS_CONFLICTING_ADDRESSES ( 0xC0000018 ). Может кто сталкивался с таким? Программа 32-битная, выполняется на Win10x64, аверов и подобного нет.

    Код (ASM):
    1. .data?
    2. align 8 ;надо выравнять для х64 ?
    3. pMem dd ?
    4. tmp dd ?
    5. oldProtect dd ?
    6.  
    7. .code
    8. start:
    9. invoke VirtualAlloc,0,4096,MEM_COMMIT,PAGE_READONLY
    10. .if !eax
    11. ;invoke dbgs,chr$("Vmalloc failed")
    12. exit
    13. .else
    14. ;invoke dbgs,chr$("[+] Memory allocated")
    15. mov pMem,eax
    16. .endif
    17. push offset oldProtect
    18. push PAGE_EXECUTE_READWRITE
    19. mov tmp,4096
    20. push offset tmp
    21. push offset pMem
    22. push 0FFFFFFFFh
    23. call NtProtectVirtualMemory ;иногда возвращает STATUS_CONFLICTING_ADDRESSES
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    M0rg0t,
    Вроде как (на сколько я помню) для функции NtProtectVirtualMemory (ну и для ее высокоуровневого аналога VirtualProtect) память должна быть с флагом MEM_RESERVE
    ну и второе предположение это размер - попробуйте 64kb
     
    M0rg0t нравится это.
  3. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
  4. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    TermoSINteZ, Вообще есть случаи когда происходит преобразование аргументов функции прежде чем они будут переданы низкоуровневой функции(те которые с префиксом Nt или Zw) ?
     
  5. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Entropy, да но в основном функции связанные с юникодом и всякими статус блоками
     
  6. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Entropy,

    Режим совместимости(compat -> legacy), тот самый wow - аргументы конвертируются(расширяется разрядность). Если оптимизатор не выключен, то таблично.
     
  7. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185