- •Защита информации в компьютерных системах
- •Информационная безопасность
- •1. Системы идентификации и аутентификации пользователей
- •2. Системы шифрования дисковых данных
- •3. Системы шифрования данных, передаваемых по сетям
- •4. Системы аутентификации электронных данных
- •5. Средства управления криптографическими ключами
- •"Оранжевая книга" сша
- •Основные элементы политики безопасности
- •Произвольное управление доступом
- •Безопасность повторного использования объектов
- •Метки безопасности
- •Принудительное управление доступом
- •Классы безопасности
- •Требования к политике безопасности
- •Произвольное управление доступом:
- •Повторное использование объектов:
- •Метки безопасности:
- •Целостность меток безопасности:
- •Принудительное управление доступом:
- •Требования к подотчетности Идентификация и аутентификация:
- •Предоставление надежного пути:
- •Требования к гарантированности Архитектура системы:
- •Верификация спецификаций архитектуры:
- •Конфигурационное управление:
- •Тестовая документация:
- •Описание архитектуры:
- •Простые криптосистемы
- •Стандарт шифрования данных Data Encryption Standard
- •Режимы работы алгоритма des
- •Алгоритм шифрования данных idea
- •Отечественный стандарт шифрования данных
- •Электронная цифровая подпись
- •1. Проблема аутентификации данных и электронная цифровая подпись
- •2. Однонаправленные хэш-функции
- •Основы построения хэш-функций
- •Однонаправленные хэш-функции на основе симметричных блочных алгоритмов
- •Алгоритм md5
- •Алгоритм безопасного хэширования sна
- •Отечественный стандарт хэш-функции
- •3. Алгоритмы электронной цифровой подписи
- •Алгоритм цифровой подписи rsа
- •Алгоритм цифровой подписи Эль Гамаля (еgsа)
- •Алгоритм цифровой подписи dsа
- •Отечественный стандарт цифровой подписи
- •Пользователь а вычисляет значения
- •Пользователь в проверяет полученную подпись, вычисляя
- •Литература
- •Романец ю.В., Тимофеев п.А., Шаньгин в.Ф. Защита информации в компьютерных системах и сетях. Под ред. В.Ф. Шаньгина. - 2-е изд., перераб. И доп. - м.: Радио и связь, 2001. - 376 с.: ил.
- •Конеев и.Р., Беляев а.В. Информационная безопасность предприятия. - сПб.: бхв-Петербург, 2003. Защита от копирования
- •Привязка к дискете
- •Перестановка в нумерации секторов
- •Введение одинаковых номеров секторов на дорожке
- •Введение межсекторных связей
- •Изменение длины секторов
- •Изменение межсекторных промежутков
- •Использование дополнительной дорожки
- •Ведение логических дефектов в заданный сектор
- •Изменение параметров дисковода
- •Технология "ослабленных" битов
- •Физическая маркировка дискеты
- •Применение физического защитного устройства
- •"Привязка" к компьютеру.
- •Физические дефекты винчестера
- •Дата создания bios
- •Версия используемой os
- •Серийный номер диска
- •Тип компьютера
- •Конфигурация системы и типы составляющих ее устройств
- •Получение инженерной информации жесткого диска
- •Опрос справочников
- •Введение ограничений на использование программного обеспечения
- •Защита cd от копирования
- •Сравнение различных защит.
- •Краткий справочник по методам взлома и способам защиты от них (1) Взлом копированием и эмулированием
- •(2) Взлом программного модуля
- •Дополнительные способы противодействия
- •Защиты от несанкционированного доступа
- •Идентификация и аутентификация пользователя
- •Взаимная проверка подлинности пользователей
- •Литература
- •Защита исходных текстов и двоичного кода
- •Противодействие изучению исходных текстов
- •Динамическое ветвление
- •Контекстная зависимость
- •Противодействие анализу двоичного кода
- •Заключение
- •Литература
- •Три ключа
- •Средства отладки и взлома программ
- •Отладчики реального режима
- •Отладчики защищенного режима
- •Эмуляторы
- •Автоматические распаковщики
- •Дизасемблеры
- •Прочие программы
- •Отладчик SoftIce
- •1. Загрузка отлаживаемой программы
- •2. Управление SoftIce'ом
- •3. Трассировка программы
- •4. Просмотр локальных переменных
- •5. Установка точек останова на выполнение
- •6. Использование информационных команд
- •7. Символьные имена
- •8. Условные точки останова
- •Как заставить SoftIce pаботать?
- •Как заставить SoftIce/Win/w95 pаботать?
8. Условные точки останова
Одним из символов, определенных в приложении GDIDEMO, является функция LockWindowInfo. Назначение этой функции - возвращение адреса переменных, которые определяют свойства окна. Для того чтобы ознакомиться с условными точками останова и точками останова на доступ к памяти, мы выполним следующие действий:
Установим точку останова на функцию LockWindowInfo.
Отредактируем поставленную точку останова таким образом, чтобы она срабатывала по определенному нами условию.
Установим точку останова на доступ к ячейки памяти, для того чтобы отследить обращения к этой ячейке.
Установка точки останова на функцию LockWindowInfo.
Командой BPX LockWindowInfo поставим точку останова на выполнение на эту функцию. Каждый раз, когда в одном из окон приложения GDIDEMO нужно будет обновить информацию, программой будет вызываться функция LockWindowInfo, так как на эту функцию поставлена точка останова, то будет вызываться SoftIce. Командой BL проверьте, установилась ли точка останова. Запустите приложение командой X или G. Как только будет вызвана функция LockWindowInfo, SoftIce всплывет. Так как обновление происходит постоянно, то постоянно вызывается и SoftIce, что очень неудобно, если нас интересует обновление какого-либо конкретного окна. Чтобы перехватить вызов на обновление конкретного окна, к примеру, POLYDEMO, воспользуемся условной точкой останова. Из исходного текста программы (файл wininfo.c) видно, что функция LockWindowInfo получает в качестве входного аргумента один параметр HWND (Handle Window) - дескриптор окна, и возвращает в вызывающую функцию одно значение - указатель на переменные для данного окна. То есть если бы мы заставили срабатывать точку останова только на обработчик окна POLYDEMO, мы бы добились своей цели. Для начала нам необходимо узнать дескриптор нашего окна, для этого воспользуемся командой:
:HWND GDIDEMO
WindowHandle hQueue SZ Qowner ClassName WindowProcedure
0724(1) 10FF 32 GDIDEMO GDIDEMO 365F:000001C4
0728(2) 10FF 32 GDIDEMO MdiClient 17A7:00001988
0734(3) 10FF 32 GDIDEMO BOUNCEDEMO 365F:00000232
0730(3) 10FF 32 GDIDEMO POLYDEMO 365F:000001DA
072C(3) 10FF 32 GDIDEMO DRAWEMO 365F:0000021c
Дескриптор окна POLYDEMO имеет значение 0730. Если в списке вы не увидели нужного окна, то запустите приложение клавишей X или G, опять сработает точка останова, проверьте, создалось ли окно, если нет, то повторите последние действия. Теперь можно останавливать исполнение программы только в том случае, когда в качестве параметра для функции LockWindowInfo используется значение 0730. В Windows параметры для функции обычно передаются через стек. При остановке в функции LockWindowInfo стек будет выглядеть следующим образом (посмотреть содержимое стека можно подведя курсор к регистру ESP, нажав правую кнопку мыши, вызвать контекстное меню и выбрать команду Display, неплохо бы еще сменить командой DD формат вывода данных в DataWindow на показ двойных слов, так как наше приложение 32-разрядное):
ESP = 0055FC00
013F:0055FC00 00404852 00000730 0055FC3C 00008CAA
Число 00404852 - это адрес, на который программа перейдет после завершения работы нашей функции (адрес возврата).
Число 00000730 - это дескриптор окна POLYDEMO (собственно то, что нас интересует).
Теперь зная, где и что у нас передается в функцию, мы можем выставить условную точку останова. Для этого вызовем на редактирование точку останова, поставленную на функции LockWindowInfo:
:BPE 0
В нижней строке командного окна появится строка:
:BPX LockWindowInfo
и курсор установится в конце строки. Теперь можете редактировать точку останова по своему усмотрению, в конце строки добавьте следующее условие:
IF ESP->4 == 00000730
и нажмите Enter.
Точка останова теперь будет выглядеть так:
:BPX LockWindowInfo IF ESP->4 == 00000730
То есть она будет срабатывать тогда, когда двойное слово по адресу ESP+4 будет равным числу 00000730, которое соответствует дескриптору окна POLYDEMO. Проверьте командой BL, соответствует ли точка останова заданной, запустите приложение и убедитесь, что вся эта конструкция замечательно работает.
Установим точку останова на доступ к первому двойному слову данных экземпляра окна POLYWINDOW. Как уже отмечалось выше, входным аргументом для функции LockWindowInfo является дескриптор окна, выходным - адрес данных экземпляра окна. После срабатывания точки останова, поставленной на функции LockWindowInfo с параметром соответствующим дескриптору окна POLYWINDOW, на выходе функции будем иметь адрес данных экземпляра окна POLYWINDOW, по этому адресу и поставим точку останова на доступ к памяти.
Для того чтобы получить адрес данных экземпляра окна, выполним программу до строки с номером 57 (в файле WININFO.C):
:G .57
Функция возвращает 32-битное значение (в нашем случае адрес) в регистре EAX, поэтому можно, используя команду BPMD (BreakPoint Memory Dword) и значение адреса в регистре EAX, поставить точку останова на доступ к первом слову данных экземляра окна POLYDEMO:
:BPMD EAX
Эта команда использует регистры аппаратной отладки встроенные в процессор для отслеживания чтения и записи двойного слова по указанному линейному адресу. В данном случае это первое слово данных экземпляра окна POLYDEMO. Используйте команду BL, чтобы проверить правильность установки точки останова.
:BL
00) BPX LOCKWINDOWINFO IF ((ESP->4)==0x00000730)
01) BPMD #015F:0052006C RW DR3
Точка останова с номером 0 установлена на исполнение функции LockWindowInfo и точка останова с номером 1 стоит на доступ к памяти по адресу #015F:0052006C.
Отключите 0 точку останова командой BD (Breakpoint Disable):
:BD 0
В отличие от команды BC, которая удаляет точку останова, команда BD временно отключает точку, т.е. она не будет срабатывать, но ее в любой момент можно включить обратно командой BE (Breakpoint Enable). Отключенные точки останова выделяются звездочками рядом с порядковым номером точки останова.
:BL
00) * BPX LOCKWINDOWINFO IF ((ESP->4)==0x00000730)
01) BPMD #015F:0052006C RW DR3
Запустите SoftIce командами X или G, когда окно POLYDEMO попытается получить доступ к первому двойному слову экземпляра данных окна, сработает точка останова и SoftIce всплывет, это будет происходить в функциях PolyRedraw и PolyDrawBez. Эти функции обращаются к полю nBezTotal, которое находиться по нулевому смещению в данных экземпляра окна POLYDEMO. Значение этого поля задает количество кривых одновременно выводимых в окно POLYDEMO.
Примечание: Из-за особенностей архитектуры процессоров Intel перехват обращения к ячейки памяти произойдет после исполнения команды, обращающейся к памяти, т.е. SoftIce остановиться на следующей команде.
Сбросьте все точки останова командой BC * и выйдете из SoftIce.
