Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Расторгуев С.П., Долгин А.Е., Потанин М.Ю. Как защитить информацию (пособие по борьбе с хакерами).doc
Скачиваний:
82
Добавлен:
02.05.2014
Размер:
673.28 Кб
Скачать

7. Как очистить программу от вирусов и

ПРИСТЫКОВАННЫХ ЗАЩИТ

В прерыдущей главе описано, как внедрить защитный механизм в тело

программы. В этой, напротив, расскажем о способе его удаления с

помощью программы EXEB, имеющейся на дискете.

НАЗНАЧЕНИЕ

Программа EXEB.EXE предназначена для анализа исполняемых модулей

и удаления из них пристыковочных частей - вирусов, защит и т.п. Она

корректно работает на ПЭВМ типа IBM PC/XT/AT в среде MS DOS версии 3.1

и выше.

СОДЕРЖИМОЕ ДИСКЕТЫ И ПОРЯДОК УСТАНОВКИ

Поставляемая дискета содержит следующие файлы:

README - описание;

EXEB.EXE - основная программа;

CHSIZE - утилита для уменьшения размера результирующей задачи.

Перед началом работы необходимо скопировать дискету на жесткий диск

в любой директорий.

Формат команды запуска:

EXEB [!] <IntNumber> <FuncNumber> <Counter> <TaskName>

[<CommandLine>]

где:

! - признак "холостого" срабатывания;

<IntNumber> ::= номер перехватываемого прерывания;

<FuncNumber> ::= номер функции (AH) указанного прерывания;

<Counter> ::= счетчик появлений функции FuncNumber;

<TaskName> ::= имя исследуемой задачи;

<CommandLine>::= аргументы командной строки исследуемой

задачи.

Примечание:

В командной строке в качестве аргумента FuncNumber разрешен

символ "*".

Числовые аргументы задаются в 16-ричной системе счисления.

Например, "EXEB 21 30 1 a.exe" - означает: перенести код

исследуемой задачи a.exe в результирующий EXE-файл при первом

обращении к 30h функции 21h прерывания после запуска a.exe.

Аргументы желательно выбирать таким образом, чтобы они

соответствовали первому после пристыкованного блока прерыванию в теле

исследуемой задачи.

Если программа была создана компиляторами с языков высокого

уровня (С, PASCAL, BASIC и т.п.), то рекомендуются следующие значения

аргументов:

<IntNumber> = 21 <IntNumber> = 21

<FuncNumber> = 30 или <FuncNumber> = 35

<Counter> = 1 <Counter> = 1.

EXEB позволяет исследовать исполняемый EXE-модуль на команды

вызова прерываний (int). Их номера фиксируются программой EXEB, если в

качестве аргумента FuncNumber использован символ "?". Например: при

строке запуска программы "EXEB 10 ? 1 a.exe" в крайнем правом столбце

экрана будут выcвечиваться текущие номера функций 10-го прерывания.

Первый аргумент командной строки "!" - признак "холостого"

срабатывания - необязателен. Его функциональное назначение - выдача

звукового сигнала в момент обнаружения указанной вами в командной

строке ситуации (без реальной ее обработки программой EXEB, т.е. без

создания результирующего EXE-файла).

Итогом работы EXEB является файл с именем TASK.EXE, который можно

запускать на выполнение (в той же среде, в которой он был создан:

версия DOS, конфигурация ПЭВМ).

ПРИНЦИПЫ РАБОТЫ

Будучи запущенной, EXEB захватывает указанное в командной строке

прерывание, запускает исследуемую задачу и начинает отсчитывать

обращения к указанной в командной строке функции захваченного

прерывания. Когда счетчик обращений станет равен 0, EXEB переносит

образ исследуемой задачи из оперативной памяти на диск. При этом

первой исполняемой командой задачи станет вызов указанного в командной

строке EXEB прерывания (int ??). Схематично последовательность работы

EXEB представлена на рис. 7.1 - 7.3.

После запуска задача EXEB выдает на экран сообщение о готовности

и ожидает нажатия любой клавиши. В этот момент пользователь при

желании может вставить дискету в дисковод (при исследовании задачи,

имеющей защиту по ключевой дискете).

ОСОБЕННОСТИ РАБОТЫ И НЕДОСТАТКИ

Результирующая задача TASK.EXE не всегда способна воспринять

командную строку, указанную в аргументе <CommandLine> при ее создании.

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

создана (объем свободной оперативной памяти). В случае какого-либо

несоответствия на экран выдается сообщение об этом и TASK.EXE

прекращает работу.

Так как EXEB "снимает" в файл TASK.EXE практически всю

оперативную память, то его объем может быть очень большим. Для

уменьшения размера TASK.EXE можно использовать утилиту CHSIZE, формат

запуска которой вы можете выяснить запустив ее без аргументов.

СХЕМА РАБОТЫ ПРОГРАММЫ EXEB.EXE

--------------------------------------------------------------¬

¦ ¦

¦ ЗАХВАТ ПРЕРЫВАНИЯ И ЗАПУСК ЗАДАЧИ ¦

¦ ¦

¦ --<¬ ¦

¦ ¦ ¦2 ¦

¦ -T----------------------T------T-+-----------¬ 1) Захват ¦

¦ ¦ a.exe int 10 ¦вирус ¦ EXEB ¦ обработки по¦

¦ -+----------------------+------+-------------- 10 вектору. ¦

¦ -->----------->------------>--------- 2) Запуск ¦

¦ 10 вектор 1 задачи a.exe.¦

¦ ¦

¦ рис. 7.1 ¦

¦ ¦

¦ ¦

¦ ПЕРЕХВАТ УПРАВЛЕНИЯ ¦

¦ ¦

¦ -T----------------------T------T-------------¬ ¦

¦ ¦ a.exe int 10 ¦вирус ¦ EXEB ¦ ¦

¦ -+------------------T---+------+-------------- ¦

¦ ¦ ¦ ¦

¦ L->----->----->--- ¦

¦ ¦

¦ рис. 7.2 ¦

¦ ¦

¦ ¦

¦ ЗАПИСЬ СОДЕРЖИМОГО ПАМЯТИ В ФАЙЛ ¦

¦ ¦

¦ -T----------------------T------T-------------¬ ¦

¦ ¦ a.exe int 10 ¦вирус ¦ EXEB ¦ ¦

¦ -+-----------------T----+------+-------------- ¦

¦ ¦ ¦ ¦

¦ ¦ ¦ ¦

¦ L=================¦====-> TASK.EXE (дискета) ¦

¦ ¦

¦ рис. 7.3 ¦

L--------------------------------------------------------------