8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 80 81 82 83 84 85 86 ... 102

Hji хакер, считающий себя профессионалом, не может позволить себе рос-пь действовать вслепую. Знание ассемблера и умение быстро и грамотно нТСрпрстировать сообщения о критических ошибках, если еще не решит проблему- т0, по кРаИ11°" мерс, придаст вам чувство уверенности и поможет лока-130Вать истинного виновника нестабильности системы. Во всяком случае, бу-\ct куда ткнуть носом зарвавшегося разработчика. Согласитесь, одно дело догадываться об ошибке и совсем другое — показывать на нее пальцем.

ПРИЛОЖЕНИЯ, НЕДОПУСТИМЫЕ ОПЕРАЦИИ И ВСЕ-ВСЕ-ВСЕ

Различные операционные системы по-разному реагируют на критические ошибки. Так, например, NT резервирует два региона своего адресного пространства для выявления некорректных указателей. Один находится на самом «дне» карты памяти и предназначен для отлавливания нулевых указателей. Другой расположен между «кучей» и областью памяти, закрепленной за операционной системой. Он контролирует выход за пределы пользовательской области памяти и, вопреки расхожему мнению, никак не связан с функцией WriteProcessMemory (см. техническую заметку ID: Q92764 в MSDN). Оба региона занимают по 64 Кбайт, и всякая попытка доступа к ним расценивается системой как критическая ошибка. В 9х имеется всего лишь один четырехкнлобайтовый регион, следящий за нулевыми указателями, поэтому по своим контролирующим способностям она значительно уступает NT.

В Windows NT экран критической ошибки (рис. А.2) содержит следующую информацию:

•адрес машинной инструкции, возбудившей исключение;

•словесное описание категории исключения (или его код, если категория исключения неизвестна);

параметры исключения (адрес недействительной ячейки памяти, род операции пт. д.).

.2 ,<м • Ошибка приложения

«rrc-.«.4n»fw aWWWOZffjDeparaftact. к памятпо адТШШШГ. Память не йржет &п> Itearf *;

0V. ! Опчем

one" *С°°бщение о критической ошибке, выдаваемое рационной системой Windows

пераццонные системы семейства Windows 9х в этом отношении более ннфор-ги Ив"ы (рис А.З) и, помимо категории исключения, выводят содержимое ре-(тона момеит сооя- состояние стека и байты памяти по адресу CS:EIP

(о ССТЬ ТекУцемУ адресу исполнения). Впрочем, наличие «Доктора Ватсона» То ~ Далее) стирает различие между двумя системами, и потому можно °Рить лишь об удобстве и эргономике 9х, сразу предоставляющей весь

5 976


минимум необходимых сведений, в то время как в NT отчет об ошибке ся отдельной утилитой.

,с°здает.

Программа выполнила недопустимую. one-рацию и (л&ет закрыт

Если эта ошибка бддет гоетоелтьсч обратитесь к разработчику.

Закрыть } *й

J

Програлша TEST явлвала-.сбой при- лБрыаеыии к

странице паичФИ;"..:"-.1.-

s модуле TSST. ЯХа по елрьсу pasi:004pi026.

Регистры:

KAX*O0g0OOOQ СЗ«С16£ EIP»0B4O10£«" ЮТ,©г»ООС0;4<; KB>C=00S3pPG0ESP-00€»fd<3c BBE=006"J rde4

ECX*OOOO0ppQ CS»CJ97 ESI«ei7«№b4 3»$»5b8f EDX«00.00OOb0 -"ES«01S7 EDI-00000000 C?"00OO [Еайтю no гадзёсу iCS-SIP:

Рис. A.3. Сообщение о критической ошибке, выдаваемое операционной системой Windows 98

Если пи один из отладчиков в системе не установлен, то окно о критической ошибке имеет всего одну кнопку — ОК, нажатие на которую приводит к аварийному закрытию «полнтнекорректного» приложения. При желании окно критической ошибки можно оснастить кнопкой Отмена (Cancel), запускающей отладчик или иную утилиту анализа ситуации. Важно понять, что Отмена отнюдь не «отменяет» автоматическое закрытие приложения, но при некоторой сноровке вы сможете устранить «пробоину» вручную, продолжив нормальную работ). Запустите Редактор Реестра и перейдите в раздел HKLM\SOFTWARE\Microsoft\Win-dows NT\CurrentVersion\AeDebug. Если такого раздела нет — создайте его самостоятельно. Строковый параметр Debugger задает путь к файлу отладчика со всеми необходимыми ключами; строковый параметр Auto указывает, должен ли отладчик запускаться автоматически (значение 1) или предлагать пользователю свободу выбора (0). Наконец, двойное слово параметра UserDebuggerHotKey специфицирует скэн-код горячей клавиши для принудительного вызова отладчика.

ДОКТОР ВАТСОН

Доктор Ватсон является штатным обработчиком критических ошибок, входя uuim в базовый пакет поставки всех операционных систем семейства Windows-По своей природе он представляет статическое средство сбора релевантно! информации. Предоставляя исчерпывающий отчет о причинах сбоя, Доктор Ватсон в то же самое время лишен активных средств воздействия па некорректно работающие программы. «Утихомирить» разбушевавшееся приложение, засТ[е вив его продолжить свою работу с помощью одного Доктора Ватсона, вы сможете, и для этого вам придется прибегать к интерактивным отладчик • одним из которых является Microsoft Visual Studio Debugger, входящий в став одноименной среды разработки и рассматриваемый далее.


т.,ется, что Доктор Ватсон предпочтительнее использовать на рабочнхетан-uv (точнее — па автоматизированных рабочих местах), а интерактивныесред--тва отладки — на серверах. Дескать, во всех премудростях ассемолера пельзо-цатеШ все равно не разбираются, а вот на сервере продвинутый отладчик будет к нельзя кстати. Отчасти это действительно так, но не стоит игнорировать то обстоятельство, что далеко не все источники ошибок обнаруживаются статическими средствами анализа, к тому же интерактивные инструменты значительно упрощают процедуру анализа. Между тем Доктор Ватсон достается нам даром, а все остальные программные пакеты приходится приобретать за •дополнительную плату. Так что предпочтительный обработчик критических ошибок вы должны выбирать сами.

Для установки Доктора Ватсона отладчиком по умолчанию добавьте в реестр следующую запись или запустите файл Drwtsn32.exe с ключом —i (для вы пол нения обоих действий вы должны иметь права администратора) (листинг АО-Листинг А.1. Установка Доктора Ватсона отладчиком по умолчанию

[rKEY LOCAL MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug] "Auto"="l"

"Debugger"="drwtsn32 -p *ld -e *ld -g" "UserDebuggerHotKey "=dword -. C0O00O00

Теперь возникновение критических ошибок программы станет сопровождаться генерацией отчета, составляемого Доктором Ватсон ом и содержащего более или менее подробные сведения о характере ее происхождения (рис. А.4).

ичибка программы

иЖехе «ьовало ои*йкя и бдоет закрыто. Щсйщт ю Созиаг-. ъ.ур«ая «цм(х*;:::;\:!;л.;::

Рис. А.4. Реакция Доктора Ватсона на критическую ошибку

Образец дампа, созданный Доктором Ватсоном, приведен в листинге А.2. Комментарии, добавленные автором, выделены полужирным шрифтом.

Листинг А.2. Образец отчета Доктора Ватсона с комментариями автора

Исключение в приложении:

пР*л.. (pid-612)-1

: pid процесса, в которой произошло исключение

Время: 14.11.2003 0 22:51:40.674 : время, когда произошло исключение

Номер: сООООООБ (нарушение прав tociyna)



0 ... 80 81 82 83 84 85 86 ... 102