Как проверить IDT

Тема в разделе "WASM.WIN32", создана пользователем hawk, 19 янв 2009.

  1. hawk

    hawk New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    155
    Здравствуйте.
    Вот задался вопросом-как определить измененна ли IDT таблица и если изменна, то к какому именно объекту она адресует, т.е. Чтото вроде комманды NTCALL в айсе , только все надо сделать программа.
    Конечным результатом действия программы должно быь вывод перехватываемых NT функций и указание объекта(exe,dll,drv) в адресное пространство которого происходит переадресация.
    Заранее благодарен.
     
  2. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    Сравнить с оригинальной таблицей, либо проверить обработчик на принадлежность к какому либо модулю, с условием что заранее известно к какому модулю принадлежит оригинальный.

    Получить оригинальную IDT можно из энтрипоинт ядра, там немного ниже во всей линейке есть код, копирующий IDT:

    005DA968 mov esi,ntoskrnl.005EFD54
    005DA96D mov ecx,800
    005DA972 shr ecx,2
    005DA975 rep movs dword ptr es:[edi],dword ptr [esi]

    5EFD54 - Это указатель на IDT. Отнимаем от него из опционального заголовка адрес загрузки и получаем RVA IDT.
     
  3. hawk

    hawk New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    155
    СПАСИБО.А как по адресу определить какому драйверу он принадлежит?
     
  4. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    Адрес не обязательно может принадлежать какому-то драйверу, если речь идет о загруженных драйверах то пройтись по PsLoadedModuleList там есть ImageBase и SizeOfImage, соотвественно проверить на вхождение, если просто нужно найти образ то идти вверх от адреса пока не упремся в MZ/PE, но заголовка может и не быть.
     
  5. hawk

    hawk New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    155
    А если это какая нибудь программа,или дллка?
     
  6. hawk

    hawk New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    155
    Но из PlLoadedModuleList можно и удалить драйвер,и при этом всё будет работать,все функции и потоки сохраняться.
    что в такой ситуации делать?
     
  7. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    Не понятен вопрос и вообще к чему это.

    А что тебе нужно сделать?, если определить к какому модулю принадлежит обработчик в IDT то я описал варианты как это можно сделать.
     
  8. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    посмотреть какай секция промаппирована по данному адресу, тобишь получить указатель на объект секция. а дальше, если эта секция содержит образ загруженного дрова, то pSection->Segment->ControlArea->FilePointer->FileName.
    поидее должно сработать :)
     
  9. hawk

    hawk New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    155
    freeman,большое спосибо.Попробую