переполнение буфера

Тема в разделе "WASM.BEGINNERS", создана пользователем Rodin, 5 апр 2009.

  1. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    В XP SP2 софтварный DEP в юзермоде проверяет исполнение кода в стэке только при обработке исключений в KiUserExceptionDispatcher. Соотв-но, если проц не поддерживает хардварный DEP (биты NX\XD в AMD64\EM64T), то включение DEP в XP SP2 не может запретить исполнение (юзермодного) кода в стэке, если этот код не вызывает исключений. Делаются ли какие-то доп.проверки при переходе в ядро - не знаю
     
  2. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    leoТоесть получается что и код в секции данных можно исполнять?
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    leo
    там везде про winxp sp2
    относится ли это к любым ОС работающим на железе без аппаратной поддержки DEP?
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Не знаю. До XP SP2 вообще никакого DEP не было, а после - в принципе могли что-то еще накрутить. Но тут нужно учитывать следующее. Если не считать обработку исключений, то без аппаратной поддержки ось может контролировать юзерский код только по адресам возврата при вызове ф-й АПИ или по адресам ф-й ThreadProc, WndProc и т.п. Но поскольку проверка атрибутов страниц сопровождается переходом в ядро (ZwQueryVirtualMemory), то вставлять ее в каждую АПИ-функцию довольно накладно. Поэтому видимо, если и добавили такие проверки, то не во все функции АПИ, а лишь в некоторые "избранные". Но разумеется, это лишь ИМХО

    PS: Ну а элементарный код типа #15, не использующий обращения к АПИ, разумеется вообще никак проконтролировать невозможно без аппаратной поддержки
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    leo
    ось может проверять eip при переключении потоков
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Оффтоп

    leo
    у них все просче как в пробке
    Код (Text):
    1. где-то в глубине ядра
    2. void kernel_function_what_execute_everywhere()
    3. {
    4.     ZwQueryVirtualMemory(...);
    5.     Sleep(50);
    6.     DoNothing(...);
    7.     return Random(0xFFFFFFFF);
    8. }
    P.S. не понявших просьба не пинать - это шутка!