SEH,VEH - словить все исключения?

Тема в разделе "WASM.BEGINNERS", создана пользователем hapr, 27 фев 2018.

Метки:
  1. hapr

    hapr Member

    Публикаций:
    0
    Регистрация:
    9 мар 2009
    Сообщения:
    59
    Есть ли способ ловить все исключения в одном процессе(потоке) или может кто знает какие исключения или в каких ситуациях нельзя их все словить?
    Интерес такой появился в связи с тем, что до недавнего времени думал, что ловятся все исключения. Но чисто случайно узнал, что например такое не ловиться:
    Код (Text):
    1.  
    2.   sub  esp,0x33000
    3. push  eax
    4.  
     
  2. Indy_

    Indy_ Well-Known Member

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

    Икслючение не может быть обработано если не корректный стек. Ядро это проверяет и если не может записать параметры на юзер стек убивает процесс. В ином любом случае управление будет возвращено в юм. Но для этого стек должен быть корректным, по крайней мере та его часть, которая проверяется ядром при записи фрейма.

    >
    1. sub esp,0x33000
    2. push eax
    Конечно это отвалится. Стек не является статик памятью, каждая его страница ниже выделенной является сторжевой. При обращении к этой странице выделяется следующая, а параметры стека при этом изменяет ядро в юзер структурах. Всякая память ниже - не существует. Вычитание размера более страницы и обращение к этой памяти есть обращение вникуда с #AV.
     
    Mikl___, hapr и yashechka нравится это.
  3. hapr

    hapr Member

    Публикаций:
    0
    Регистрация:
    9 мар 2009
    Сообщения:
    59
    Понятно, я не знал, что стек проверяется думал что раз VEH через кучи реализован то стек роли не играет.
    Спасибо за разъяснение.
     
  4. Indy_

    Indy_ Well-Known Member

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

    Кучи это что значит, heap ?

    VEH механизм использует её для хранения инфы про диспетчеры. Но нужно понимать что это общая память, а не какая то фишка именно векторной обработки. И стек никаким образом к данному механизму не относится, впрочем вы не туда смотрите. Нахватавшись всех этих терминов у вас в уме походу каша образовалась" :)

    В общем понятно, открыл в первый раз дизасмом если любо нэйтив механизм там увидишь кучу(хип). Но это общая память, она используется есчо на этапе инициализации апп, на это не нужно обращать внимание. Хип это довольно сложный менеджер памяти, вы наверно хотите сразу всё охватить :)
     
    Mikl___ нравится это.