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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 59 60 61 62 63 64 < 65 > 66 67 68 69 70 71 .. 123 >> Следующая

81h=второй жесткий диск)
ES:BX => буфер для записи на диск Выходные данные:
248
ГЛАВА 6. Инфицирование загрузочного сектора
CF устанавливается на ошибку, и код ошибки передается в АН CF очищается,
если операция прошла успешно А1_=число записываемых секторов
На дискете или жестком диске данные размещаются согласно треку (или
цилиндру), головке и номеру сектора (см. рис. 13). На дискете трек имеет
номер от 0 до 39 или от 0 до 79 в зависимости от типа дискеты.
На жестких дисках количество цилиндров может достигать нескольких тысяч,
а количество головок в два раза превышает число используемых физических
плоттеров. Секторы - это блоки данных (обычно по 512 байтов), сохраняемые
на диске. Обычно одна комбинация трек/головка сохраняет от 9 до 64
секторов.
Для чтения секторов с диска или записи их на диск мы должны передать
прерыванию 13h несколько параметров. Сначала нужно установить al - числу
секторов для чтения или записи. Далее, dl должен быть числом диска (О-А:,
1-В:, 80Н-С:, 81H-D:), с которого будет проводиться чтение. Регистр dh
определяет номер головки, в то время как с! содержит сектор, a ch - номер
трека.
В случае, если на диске больше 256 треков, число треков делится на две
части: нижние 8 битов помещаются в ch, верхние два бита помещаются в
верхние два бита cl. Это позволяет управлять 64 секторами и 1024
цилиндрами на диске.
Затем нужно использовать es:bx и определить адрес памяти буфера, который
получит данные при чтении или поставит данные для записи.
К примеру, чтобы прочитать цилиндр 0, головку 0, сектор 1 на диске А: в
буфер ds:200H, нам потребуется вызов к прерыванию 13h:
mov ах,201Н ;читаем 1 -й сектор
mov сх,1 ;головка 0, сектор 1
mov dx,0 ;диск 0, трек О
mov Ьх,200Н .буфер в офсете 200Н
push ds
249
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
pop es ;es=ds int 13H
Рис. 13. Организация треков, головок и секторов диска
Когда прерывание 13h возвращается, оно использует флаг переноса для
определения, сработало оно или нет. Если флаг переноса при возврате
установлен, что-то помешало выполнению подпрограммы для службы
прерывания.
ГЛАВА 6. Инфицирование загрузочного сектора
DROPPER.ASM загрузочного сектора
Листинг DROPPER.ASM - это "дроппер" или простой загрузочный сектор для
загрузки операционной системы MS-DOS. Он отличается от обычного
загрузочного сектора тем, что отсюда изъята необязательная
функциональность. Обычный загрузочный сектор показывает несколько
сообщений об ошибках. Наш DROPPER.ASM лишен такой вежливости. Вместо
беседы с пользователем он просто останавливается, предлагая использовать
другой диск. Такая урезанная версия позволяет сэкономить около сотни
байтов.
DROPPER.ASM проверяет систему на наличие первого системного файла и далее
загружает его. При наличии первого файла вряд ли второй файл будет
отсутствовать, так как они всегда поставляются одной парой (FORMAT и
SYS).
Если по каким-то причинам второй фал отсутствует, наш загрузочный сектор
загрузит и выполнит первый файл. Первая системная программа не будет
работать без второго файла. В этом случае обычный загрузочный сектор
выдал бы ошибку. Мы же экономим здесь еще около 30 байтов.
Программа DROPPER.ASM содержит важный механизм, который требуется для
вирусов загрузочного сектора (хотя в данном случае мы рассматриваем не
вирус, а загрузчик). Загрузочный сектор не является обычной программой,
которую вы можете загрузить и выполнить наподобие EXE- или СОМ-файла.
Загрузочный сектор, чтобы он стал полезным, нужно поместить в правильное
место на диске (трек 0, головка 0, сектор 1). Но когда вы ассемблируете
ASM-файл, то обычно получаете СОМ-или ЕХЕ-файл. Загрузчик преодолевает
эту брешь.
Чтобы заставить DROPPER.ASM работать, вам нужно ассемблировать его в COM-
файл. Сам загрузочный сектор разместится в этом COM-файле в офсете 7С00Н.
Это делается простым размещением инструкции ORG 7С00Н перед кодом
загрузочного сектора.
В начале СОМ-файла (в обычном офсете 100Н) размещается небольшая
программа, которая:
251
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
1. читает загрузочный сектор с лиска А: в область данных;
2. копирует специфические для диска данные в начало загрузочного сектора
в DROPPER загрузочном секторе;
3. записывает окончательный загрузочный <?ёктор обратно на диск А.
В результате выполнения DROPPER.ASM диск А: получает наш загрузочный
сектор вместо DOS загрузочного сектора. Диск по-прежнему будет работать.
То есть, если бы загрузочный сектор, помещенный нами на диск, был
вирусом, то дискета стала бы зараженной.
Исходный код DROPPER.ASM
Следующую программу можно ассемблировать и выполнить как COM-файл с
помощью TASM, MASM или А86:
DROPPER для DOS 6.22. НЕ является вирусом! Это сегмент, из которого
загружается и выполняется первый файл ОС (IO.SYS). Мы пока не знаем, что
здесь он выполняется в 0070:0000Н, но нам нужен адрес для прыжка, чтобы
определить сегмент, тогда мы сможем выполнить дальний прыжок к нему.
Предыдущая << 1 .. 59 60 61 62 63 64 < 65 > 66 67 68 69 70 71 .. 123 >> Следующая