Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы (лекции) (4 семестр).doc
Скачиваний:
11
Добавлен:
04.11.2018
Размер:
728.06 Кб
Скачать

Лекция №8

Программа

Л юбая программа, использующая 21h, может и изменять вектор, указывающий на какую-то область памяти, на адрес производной функции. Программа, которая ограничивает доступ, перехватывает 2 вида прерывания 13h и 21h ( прямое чтение записи секторов диска). Анализирует права, либо запрещает, либо разрешает доступ. Чтобы обойти: любая программа защиты – нужно каким-либо образом обойти защиту, определить истинный адрес данного вектора.

1 способ:

Устанавливаем int1 на свою программу обработки, затем режим пошаговой работы, а потом вызываем интегрирующую функцию (безопасную) – последние выполняемые команды всех программ, которые изменяли данный вектор прерывания, а затем обрабатывается программа обработки прерывания. После каждой команды будет вызываться функция, в которой анализируются наши прерывания.

0

AF2534B8

21h имеет адрес AF2534B8

AD34:F328

Система защиты установила в качестве обработчика прерывание 21h. Будет вызываться сначала функция по адресу.

ПЗ

Int 21h

AD34:F328

Jmp

AF25:34B8

Old int 21h

Когда вместо …………………………………… приложение вызывает int 21h, т.е. будет вызываться функция в теле команды. Функция либо передает управление старшему адресу, либо нет. Злоумышленник должен при вызове int 21h должен попасть сразу на AF2534B8.

Списать программу

Int 1

Int 21

Перехватив int1, выполняющее пошаговую работу, управление передано приложению. Надо пройти все команды. Управление сначала попадет в int 21. Команды попадают в приложение. Вызывается безопасная функция, выдача символов на экран (пример того, что выдает приложение). Доходим до перехода на адрес ……………………………………………………………………………………………………..

Все стандартные обработчики имеет вход. Любое приложение может просканировать последовательность команд. Вместо вызова int 13h и int 21h можно делать переход на любой адрес.

Для DOS:

  1. Для нахождения для нахождения адреса сегмента DOS нужно использовать недокументированную 34h и прерывание 21h, которое будет возвращать в регистрах ES и BX адрес так называемого флага активности DOS, расположенного в сегменте. Остается просканировать 64 КБ. Будет возвращать флаг активности.

  2. Можно вызвать недокументированную функцию 3, 12 и прерывание 2F, которое вернет в регистре DS адрес сегмента DOS.

Косвенный вызов DOS: для её использования нужно поместить в регистр DS и DX указатель на массив системный регистров. В AX занести значение 5D00 и вызвать int 21h. При выполнении данной функции DOS заполнит регистры процессора значениями из массива и выполнит указанную в AX функцию.