ВУЗ:
Составители:
159
Проверка количества свободной памяти и сравнение и с тем объемом, к
которому задача "привыкла" или "приучена". Это действия позволит
застраховаться от слишком грубой слежки за программой с помощью
резидентных модулей.
Проверка содержимого незадействованных для решения защищаемой
программы областей памяти, которые не попадают под общее распределение
оперативной памяти, доступной для программиста, что
позволяет добиться
"монопольного" режима работы программы.
Проверка содержимого векторов прерываний (особенно 13h и 21h) на
наличие тех значений, к которым задача "приучена". Иногда бывает полезным
сравнение первых команд операционной системы, отрабатывающих этим
прерывания, с теми командами, которые там должны быть. Вместе с
предварительной очисткой оперативной памяти проверка векторов прерываний
и их принудительное
восстановление позволяет избавиться от большинства
присутствующих в памяти резидентных программ.
Переустановка векторов прерываний. Содержимое некоторых векторов
прерываний (например, 13h и 21h) копируется в область свободных векторов.
Соответственно изменяются и обращения к прерываниям. При этом слежение
за известными векторами не даст желаемого результата. Например, самыми
первыми исполняемыми командами программы копируется содержимое
вектора 21h (4 байта)
в вектор 60h, а вместо команд int 21h в программе везде
записывается команда int 60h. В результате в явном виде в тексте программы
нет ни одной команды работы с прерыванием 21h.
Постоянное чередование команд разрешения и запрещения прерывания,
что затрудняет установку отладчиком контрольных точек.
Контроль времени выполнения отдельных частей программы, что
позволяет выявить "остановы" в теле исполняемого
модуля.
Многие перечисленные защитные средства могут быть реализованы
исключительно на языке Ассемблер. Одна из основных отличительных
особенностей этого языка заключается в том, что для него не существует
Проверка количества свободной памяти и сравнение и с тем объемом, к
которому задача "привыкла" или "приучена". Это действия позволит
застраховаться от слишком грубой слежки за программой с помощью
резидентных модулей.
Проверка содержимого незадействованных для решения защищаемой
программы областей памяти, которые не попадают под общее распределение
оперативной памяти, доступной для программиста, что позволяет добиться
"монопольного" режима работы программы.
Проверка содержимого векторов прерываний (особенно 13h и 21h) на
наличие тех значений, к которым задача "приучена". Иногда бывает полезным
сравнение первых команд операционной системы, отрабатывающих этим
прерывания, с теми командами, которые там должны быть. Вместе с
предварительной очисткой оперативной памяти проверка векторов прерываний
и их принудительное восстановление позволяет избавиться от большинства
присутствующих в памяти резидентных программ.
Переустановка векторов прерываний. Содержимое некоторых векторов
прерываний (например, 13h и 21h) копируется в область свободных векторов.
Соответственно изменяются и обращения к прерываниям. При этом слежение
за известными векторами не даст желаемого результата. Например, самыми
первыми исполняемыми командами программы копируется содержимое
вектора 21h (4 байта) в вектор 60h, а вместо команд int 21h в программе везде
записывается команда int 60h. В результате в явном виде в тексте программы
нет ни одной команды работы с прерыванием 21h.
Постоянное чередование команд разрешения и запрещения прерывания,
что затрудняет установку отладчиком контрольных точек.
Контроль времени выполнения отдельных частей программы, что
позволяет выявить "остановы" в теле исполняемого модуля.
Многие перечисленные защитные средства могут быть реализованы
исключительно на языке Ассемблер. Одна из основных отличительных
особенностей этого языка заключается в том, что для него не существует
159
Страницы
- « первая
- ‹ предыдущая
- …
- 157
- 158
- 159
- 160
- 161
- …
- следующая ›
- последняя »
