Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Разрушение программы защиты и схем контроля





Допустим, что злоумышленнику известна интересующая его программа с точностью до команд реализации на конкретном процессоре. Следовательно, возможно смоделировать процесс ее загрузки и выяснить адреса частей программы относительно сегмента оперативной памяти, в которой она загружается.

Это означает, что возможно произвольное изменение кода программы и обеспечение отклонения (как правило, негативного характера) в работе прикладной программы.

Тогда алгоритм действия закладки может быть следующим.

1. Закладка загружается в память каким-либо образом.

2. Закладка осуществляет перехват (редактирование цепочки) одного или нескольких прерываний:

· прерывание DOS “запуск программ и загрузка оверлеев” (int 21h, функция 4Bh);

· прерывание BIOS “считать сектор” (int 13h, функция 02h);

· прерывание от системного таймера (int 08h).

3. По одному из трех событий закладка получает управление на свой код и далее выполняет следующие операции:

· проверка принадлежности запущенной программы или уже работающей (для таймерного прерывания) к интересующим программам;

· определение сегмента, в который загружена программа;

· запись относительно определенного сегмента загрузки некоторых значений в оперативную память так, чтобы отключить схемы контроля и (или) исправить программу нужным образом.

Принципиальная возможность исправления кода следует из того, что вывод о правильности работы программы делается на основе операций сравнения в арифметико-логическом устройстве процессора.

Сравнение результатов работы выполняется командой CMP, а результат сравнения изменяет один или несколько бит регистра флагов. Следовательно, того же результата можно добиться, изменив эти биты в одной из команд работы с регистром флагов типа CLD, CLS, LAHF и т.д.

Наконец, возможен случай, когда содержательный код программы защиты вместе со схемой контроля будет удален из памяти полностью и все последующие операции будут выполнены без влияния программы защиты.

Таким образом, анализируя в данном случае действия закладки, необходимо считать возможным любые искажения кода программ.

Основным способом активизации разрушающих закладок является запуск ассоциированных с ними программ. При этом закладка получает управление первой и выполняет какие-либо действия (изменение адресов прерывания на собственные обработчики, исправление в коде программ защиты и т.д.).

Листинг 14.3. Пример закладки, разрушающей схему контроля

{$M 1024,0,0}
{$I-}
uses
Dos;
const
CMPSeg=$2E7F; { Адреса ячеек, подлежащих модификации, }
CMPOfs=12; { указанные относительно PSP }
JMPSeg=$2EA4;
JMPOfs=2;
var
DOSSeg, DOSOfs, Psp:word;
OldInt8h:pointer;
procedure Int8h; interrupt;
begin
if (Psp=PrefixSeg) then
begin
if(Mem[DOSSeg:DOSOfs]=0) then
asm
mov ah, 62h
int 21h
mov Psp, bx

end;
end
else
begin
MemW[CMPSeg+Psp:CMPOfs]:=$9090; { Запись NOP вместо CMP }
MemW[JMPSeg+Psp:JMPOfs]:=$9090; { Запись NOP вместо JMP }

Date: 2016-11-17; view: 227; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.01 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию