ПУТЕШЕСТВУЕМ к ядру

Discussion in 'Безопасность и Анонимность' started by Dimi4, 9 Jun 2008.

  1. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,045
    Reputations:
    291
    ПУТЕШЕСТВИЕ к ядру Windows

    • Intro

    Причиной написание етой статье стали "синие экраны" винды. Юзаю я висту от недавно. Когда попытался поставить VertigoServ сразу улетел в бсод. "Мдаааа" - подумал я. И забил на вертиго. Но не тут - то было. Подключая флеш драйв винда опять улетела в бсод.(при загрузке компа)

    Начало путишествия к ядру Windows

    Вытянул нафиг мою "пахучую" флэшку из компа, и норм загрузился, увидил родной робочый стол. Ура :)

    • Лезу к диспетчеру
    Первым делом полез в диспетчер устройств, и начал читать сводку о проблемах с обородуванием и драйверами. Увидил также там желтые вопросительные знаки, которые уведомляют, что с оборудованием что-то не так. Приходитьсся выяснить что. Ми подключил флэшку опять, перезапустил диспетчер, но на этот раз видил, что возле "Корневой USB концентратор" появилься предупреждающий символ. "Фиговооо..." подумал я.

    Прочел о "Состоянии устройства". Оказалось, что : "устройство отсутсвует, работает неправильно, либо на него не установлены все драйверы."

    • Драйвер - не подписан!

    Я быстренько набрал в комманд строке:
    Code:
    sigverif
    
    этим действием вызвал утилиту, которая выдает список всех драйверо, не подписаных цыфрофой подписсю. Думаю понятно, что прежде всего эти драйвера попадают под подозрения, так как подписаные чётко проверяються в лабораториях Windows hardware quality.
    Вот и появились наши неподписаные драйвера. решил сохранить их в лог файл(мб пригодяться :D ).
    (Дополнительно --- Ведение журнала ----- просмотр журнала)
    • Диспетчер проверки драйверов

    Теперь можна проверить все драйверы без подписи, и выявить дефективные. Поможет нам утилита
    verifier. Запускаем из цмд
    Code:
    verifier
    Для тонкой проверки, я выбрал параметр - "Создать нестандартные даные". Всего есть 8 методов проверки. Чтобы не упустить не одного источника злобной ошибки, чекаем все 8.
    Некст степ: "Автоматичиске выбрать неподписаные драйвера" звучит заманчево. Но этот список не похож на тот, который мы достали из утилиты sigverif. Так что выбираем: "Выберете имя драйверов". Выбираем, сравниваем с логом, который сохранили(вот и пригодился).

    Перезапустили ПК.
    ПУТЕШЕСТВИЕ к ядру
    Опять подключил флэху, и снова БСОД! :( .

    Сообщение:
    Похоже, что дело действительно в драйвере, но в каком?

    • Грузимся в безопасном
    завершаем работу верифаера:

    Code:
    verifier /reset
    
    теперь нам нужно проконтролировать работу Ядра, + записать в файл инфо об состоянии.
    Открываем свойства "моего компютера". далее "дополнительно --- параметры --- загрузка и восстановление" Отключаем режим "выполнить автоматическую перезагрузку", выбрать из списка "дамп памяти ядра".

    Чтобы поймать нашие "плохие дрова" нужно спровоцировать винду на ищо один бсод. Опять запускаем verifier. но в качестве проверки пределяем "особый пул". (В этом случае драйверам выделяеться определенная область памяти. Если драйвер выходит за его пределы, появляеться бсод, и винда регистрирует этот момент.)

    • Предотвращаем запись поверх дампа.
    Чтобы это сделать, необходимо открыть снова "загрузка и восстоновление" и выбрать "Малый дамп памяти (64кб)". Перезапускаем винду.

    • Определяем дефектные драйверы

    Чтобы прочитать дамп памяти необходима утилита - Debugging tools for windows.(microsoft.com/whdc/devtools/debugging.In-stallx86.mspx).
    Скачиваем (15мб около) и устанавливаем. Запускаем утилиту WinDbg
    необходимо скачать символы, которые потребуються чтения дампа ядра. Качать только нужное будем так: (cmd)
    Code:
    SRV*C:\Symbols\*http://msdl.microsoft.com/download/symbols

    Нужно открыть дамп.
    прога спрашивает:
    тискаем "ДА". После этого открылось окно "Command" с первой инфой.

    Находим строку :
    . Если там есть файл с расширением SYS - драйвер заблочен.

    Хм. ВинДбг не розказал нам имя драйвера.

    Пробуем узнать с помощю команды:
    Code:
    !analyze -v
    Так, опять видим уже знакомые ошибки:
    Листаем вниз до строчки :
    ми обнаружыл адреса и названий функий ядра,которые вызывались перед збоем.
    Если названия функций в верхних начинаються не с
    речь идет не о нормальных функ. ядра. А оно именно так ;) Идем дальше.
    вводим команду:
    Code:
    !thread
    постраемся вывести список данных, которые булы перепутаны при сбое.
    Наконец-то.
    Утилита выдала етот список.
    Быстренько копируем шеснадцатеричное число в комманд.строку, и перед нима добавляем !irp
    Ура, выяснилось что при сбое был сохранен пакет запроса ввода\вывода. Два драйвера попытались вызвать этот пакет одновременно, что привело к сбою.

    Возвращаемся
    Опять проверил драйверы устройств, только что обнаруженные с помощю WinDbg, програмой DriveMax. Инсталировав, и запустив эту утилиту, я выяснил, какая версия деф. драйверов используються. оказалось, что драйвер usb накопителя устарел.
    Пошол прямо на хоумпагу разработчика.

    Драйвер 2 это вообще особый случай. driveMax его не нашел. гугля разказала что драйвер не относиться к апаратным, а к защите от копирование под названием Starforce. (Stalker наверно помешал моей винде. :D ) обновил драйвер, и всё норм!

    спс чипу, пережыл тоже что и он.
     
    #1 Dimi4, 9 Jun 2008
    Last edited: 9 Jun 2008
    5 people like this.