Какие есть еще методы перехватить исключение?

Тема в разделе "WASM.WIN32", создана пользователем GorluM, 11 мар 2007.

  1. GorluM

    GorluM николай gorl

    Публикаций:
    0
    Регистрация:
    6 дек 2003
    Сообщения:
    61
    Адрес:
    Москва
    Есть некоторый код, который может творить любую фигню. Я эту фигню фиксирую обработкой исключений. Однако SEH у меня убивается об стенку как только код портит стек, а VEH при вызове какого-нибудь мусора (олли даже не может понять, от чего ее так торкнуло, мол, просто не могу обработать исключение и все тут). Есть еще какие-нибудь очевидные и не очень способы обработать необрабатываемые исключения? А то процесс просто рушится без каких либо намеков на "Программа выполнила недопустимую операцию".
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    перехватить соответствующие записи в IDT для обработки этих исключений :P
     
  3. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    а это как? oO
     
  4. GorluM

    GorluM николай gorl

    Публикаций:
    0
    Регистрация:
    6 дек 2003
    Сообщения:
    61
    Адрес:
    Москва
    Я пока не разобрался как, но то что не ловит ни вех ни олли - это факт.
     
  5. GorluM

    GorluM николай gorl

    Публикаций:
    0
    Регистрация:
    6 дек 2003
    Сообщения:
    61
    Адрес:
    Москва
    только usermode (
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    тогда попробовать захучить системный обработчик, который указывает внутрь kernel32.dll и является концом цепочки SEH
    (у меня это адрес 7c839aa8)
     
  7. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    если окошко не вываливается, то и до кернеловского дело скорее всего не доходит..
    кстати, а последний разве в кернеле? не в ntdll?
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Nouzui
    в кернеле, в кернеле.
    кстати это один из способов получения базы кернела. смотрится последний обработчик сех и листается вниз до mz,pe-заголовков страницами. это и будет база кернела.
     
  9. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    у! а native-аппликейшены, выходит, работают без обертки?
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Я те грю, у меня адрес - 7C839AA8.
    Смотрим по карте модулей:

    имхо вывод очевиден о принадлежности этого адреса к соотв. модулю.
     
  11. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    значит, без обертки...
     
  12. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    кстати, а ты чем такую карту получил?
     
  13. GorluM

    GorluM николай gorl

    Публикаций:
    0
    Регистрация:
    6 дек 2003
    Сообщения:
    61
    Адрес:
    Москва
    У меня SEH вообще не выполняется в случае критического исключения.
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Nouzui
    OllyDbg: View -> Memory -> Правый клик -> Copy to clipboard -> Whole table
     
  15. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    а я как последний ползуюсь devenv'ом.. даже сайс не ставил
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    мб для них загрузчик ставит другой системный обработчик, или KiDispatchUserException ведет себя как-то по-другому.
    хотя может и без обертки..
     
  17. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    дайте зловредного кода
     
  18. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    тема задохнулась под флудом )
    GorluM
    в общем, не знаю, что тут можно сделать
    разве что не ставить своих хендлеров внутри программы и перехватить необрабатываемые исключения...
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    кстати а что насчет SetUnhandledExceptionFilter ?
    Я правда не помню, куда он ставит обработчик, в сех или нет =\

    Кстати, можно попробовать хукнуть еще RtlDispatchException.
     
  20. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    именно этоя и понимал под фразой "перехватить необрабатываемые исключения"