Определение принадлежности адресса к стеку

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

  1. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Хай алл. Родилась такая трабла:
    Нужно определить что ф-я была вызванна из стека, каким образом можно определить что адрес возврата указывает на стек ?
     
  2. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    А сравнить значение в регистре ESP со значением на вершине стека на предмет "близости" значений? Или сравнить cs и ss ?
    \\ Честно говоря я себе это слабо представляю, стек должен быть екзекутабл и что делать с DEP? \\
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    tylerdurden
    TIB и TEB, Чук и Гек и т.п. ;)
     
  4. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    FS:[4] и FS[8]
    (это для текущего потока) но код может быть в стеке
    другого потока. тогда придется проверять все стеки
    которые есть. может логичнее проверять адрес
    на предмет попадания в секцию кода какой нибудь
    загруженной dll ?
     
  5. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Да, просто такое сравнение мне показалось вначале каким-то слишком уж простым... А если шел-код передвинет себя куда-нибудь и там выполнит ф-ю, что делать тогда ?

    Обычно в конце ф-ий стоит retn поэтому селектор не меняется, а DEP (если он не хардварный) что-то ничего не отлавливает по этому поводу.
     
  6. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    Сейчас DEP почти везде хардварный
    AFAIK чтобы вызвать подпрограмму, которая не в текущем сегменте кода, тебе нужно сделать FAR JUMP или FAR CALL, который и поменяет селектор, после чего CS=SS (если это стек текущего потока)
     
  7. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Хз, я фар колов в винде не видал (хотя я только начал ковырять это дело...)
    А про деп, так мне на работе только поставили комп с хардварным депом, и то надо в boot.ini прописывать /NoExecute=AlwaysOn иначе он только системные библиотеки защищает...
     
  8. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Это я к тому что "если вы такой умный, то почему вы такой бедный"... В смысле фига досих пор никто не заинжектил половину системных процедур которые юзают шел коды четырься-шестью асмовскими строчками и не возрадовался ? Чего-то я не ввидел до сих пор шелл коды которые двигают свой код куда-нибудь из стека перед вызовом АПИ ?
     
  9. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    А ты вообще много шелл кодов видел под WinXP+SP2+Updates? AFAIK такие дыры довольно легко обнаружимы, а Hardware DEP - глобальная заплатка ко всем таким дырам.
    IMHO шеллкод вымер + :dntknw:
     
  10. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Не скажи. Да, мои тесты на переполнения буффера вымерли как только я врубил хардварный ДЕП на все процессы, но так же вымерло и несколько прог (хотя я этого не заметил, но типы которым я пишу кричат мол "DEP is just temprorary stuff ! We need another way to protect buffer overflow vulnerbilities !"... Мол у них юзвера накричали что проги перпестали работать... Епт, так кто ж им говорил врубать его на всю систему, я имел ввиду per process... Короче в любом случае можно обойти hardware DEP (на данном этапе, хотя вообще это рульная штука.
     
  11. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    >Да здравствуют баги душистые, и Blue Screen Of Death'ы пушистые....
    долго ржал :)