Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Азбука хакера 3. Компьютерная вирусология - Собейкис В.Г.

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 100 101 102 103 104 105 < 106 > 107 108 109 110 111 112 .. 123 >> Следующая

возвращает число, которое должно быть вставлено в ds. Когда мы определим
данное число, оно будет действовать как селектор сегмента данных.
3. Определить базу сегмента, ассоциированного с новым дескриптором. Это
линейный адрес места, где начинается сегмент. База устанавливается с
помощью DPMI-функции 7.
4. Установить предел (размер) нового сегмента, используя DPMI-функцию 8.
Это просто размер памяти, которую мы назначали выше.
5. Установить права доступа для нового сегмента, чтобы он был доступным
для чтения/записи. Это делается с помощью DPMI-функции 9.
6. Поместить новый селектор в ds и es.
Когда Cam Magnum заканчивает свою работу, он (с помощью DPMI-функции
502Н) переназначает одолженную память. По-
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
скольку вирус использует динамически назначаемый сегмент данных, он
должен устанавливать в нем все переменные. Отметим, что первоначальные
данные являются неопределенными.
Подготовка и выполнение
Когда вы напишете Windows-программу на программном языке С и используете
в ней функцию WINMAIN, компилятор добавит некоторый код перед WINMAIN,
чтобы правильно адаптировать программу .в среде Windows. Наш вирус будет
выполнен прежде этого дополнительного стартового кода, поэтому он должен
позаботиться о нем. К счастью, нам нужно лишь модифицировать регистры.
Вирус Caro Magnum заботливо сохраняет все значения регистров записи и
затем восстанавливает их перед выполнением прыжка к программе-жертве.
Ранее мы много времени посвятили инфицированию DOS COM-файлов. В наше
время COM-файлы устарели, но техники, которые мы обсуждали, применяются и
вирусах для Windows. Вот вам пример: Caro Magnum добавляет код к
существующему сегменту и должен использовать перемещаемый офсет. А эту
технику мы уже рассматривали выше.
Выполнение в виде Windows EXE
Чтобы создать Windows EXE из CARO.ASM, вам понадобится .DEF-файл и .RC-
файл. Затем вы вставите вирус вместе с RC (Resource Compiler -
компилятором ресурсов). Сам вирус будет функцией WinMain (хотя и не
традиционной!). Вам нужно сделать ее публичной в ассемблерном файле.
Затем выставьте внешнее объявление для любых вызовов к API, которые
использует вирус. Это гарантирует вам, что EXE, создаваемое RC, будет
иметь встроенные в него перемещения.
Вирус строит перемещения позже. При таком исполнении вы можете
ограничиться DB и определить вызов к API в вирусе - просто закодируйте
его как вызов к внешней функции.
После завершения работы Caro Magnum жертва использует Windows API для
приостановки программы, то есть она вызывает PostQuitMessage, а не DOS-
функцию 4С прерывания 21Н.
А ОС
ГЛАВА 9. Вирусы под Windows
Инфицирование DLLs
Caro Magnum способен инфицировать DLLs (Dynamic Link Libraries -
динамически подключаемые библиотеки) и любой файл с расширением .EXE.
Библиотеки DLL часто именуют с расширением .DLL. Для решения этой
проблемы мы должны изменить FILE_NAME1 на FILE_NAME2 в начале
подпрограммы FIND FILE. Библиотеки DLL структурно схожи с Windows ЕХЕ-
файлами. Они имеют особый код запуска, который выполняется при загрузке
DLL особый код оболочки, выполняемый при размещении DLL, и пакет
экспортируемых функций. Caro Magnum инфицирует код запуска, чтобы вирус
выполнялся каждый раз, когда Windows загружает DLL в память.
Единственным реальным отличием DLL от ЕХЕ при их выполнении является то,
что DLL можёт имёть только один пример себя в памяти, и ее подпрограммы
обычно используют стек оператора вызова. Для Caro Magnum это различие
абсолютно неважно.
Общие замечания
В этой главе мы исследуем только один вирус для Windows, но у этого
класса инфекторов очень много возможностей. Так как Windows-программы
имеют множество точек входа, вы можете инфицировать файлы различными
способами, задействуя любую из этих точек. Кроме того, Windows предлагает
нам целый набор исполняемых программ: драйверы устройств, виртуальные
драйверы, множество системных файлов и т. д. Если вы научитесь
инфицировать KERNEL то сможете модифицировать любую API-функцию и
проводить инфицирование при каждом вызове избранной вами функции.
Исходный код Caro Magnum
Чтобы ассемблировать Caro Magnum, вам понадобится TASM или MASM,
совместимый с Windows редактор связей и RC (Windows Resource Compiler),
который поставляется со многими высокоуровневыми компиляторами,
основанными на Windows. Кроме того, вам потребуются Windows-библиотеки,
где определяются _1ореп и т. д. Эти библиотеки можно получить вместе с
Microsoft Windows SDK, доступным от Developer Network. Ниже приведен бат-
файл для ассемблирования кода в готовый к исполнению Win ЕХЕ-файл:
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
masm саго,,; гс /г саго, гс
link /а:512 /nod caro,"slibcew libw, caro.def rc caro.res
Файл CARO.DEF:
NAME CARO
DESCRIPTION 'CARO-Magnum Virus'
EXETYPE WINDOWS STUB W1 NSTUB.EXE'
CODE MOVEABLE DISCARDABLE;
DATA MOVEABLE MULTIPLE;
HEAPSIZE 1024 STACKSIZE 5120
EXPORTS VIRUS (c)1
Файл CARO.RC:
¦Include <windows.h>
Предыдущая << 1 .. 100 101 102 103 104 105 < 106 > 107 108 109 110 111 112 .. 123 >> Следующая