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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 74 75 76 77 78 79 < 80 > 81 82 83 84 85 86 .. 123 >> Следующая

Треки, разделенные на дуги, называются "секторами". Количество секторов
на жестком диске определяется при форматировании и зависит от кодирующей
схемы:
17 секторов на трек (при MFM-кодировании)
26 секторов на трек (при 2,7 RLL-кодировании)
34 секторов на трек (при 3,9 RLL-кодировании)
63 секторов на трек (часто используется в наши дни).
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Количество данных, сохраняемых в секторе, также различно, но обычно оно
равно 512 байтам на сектор. Максимальными параметрами часто являются
следующие:
MaxCYL = 1024 MaxHEAD = 16 MaxSec/track - 63
Таким образом, цилиндры перечисляются от 0 до MaxCYL-1, головки - от 0 до
MaxHead-1, а сектора - от 1 до MaxSect/ track.
Физический сектор создается триплетом C,H,S. Первым физический сектор
находится в (0,0,1).
Чтобы получить следующий физический сектор, мы должны увеличить номер
сектора до (0,0,MaxSect).
После этого номер головки инкрементируется, а номер сектора
рестартируется с 1 и начинает возрастать до (0, MaxHead, Maxsect).
Затем номер цилиндра инкрементируется, а два других показателя
рестартируются до 0 и начнут возрастать до (MaxCyl, MaxHead, MaxSect).
Номер физического сектора рассчитывается следующим образом:
Номер сектора = (CYL*HEAD*SECT) + (HEAD*SECT) + (SECT-1)
Например, триплет (3,23,7) даст нам физический сектор 650.
Далее, для создания многоцелевого вируса нам понадобятся следующие важные
области диска:
¦ MBR (Master Boot Record - главная загрузочная запись)
• Boot Record - загрузочная запись
• Первая копия FAT {File Allocation Tables - таблицы размещения файлов)
¦ Вторая копия FAT
• Запись корневой директории.
ГЛАВА 7. Многоцелевые вирусы
Главная загрузочная запись
MBR мы найдем в физическом секторе 0 - то есть в триплете (0,0,1) на
жестком диске.
1Мл. 14. С|рукгура MBR (гмаиой загрузочной записи)
Офсет Размер Описание
OOOh-lBEh IBEh Код для загрузки и выполнения загрузочной записи
активного раздела
IBEh-lCDh lOh Запись для раздела №1
ICEh-lDDh lOh Запись для раздела №2
IDEh-lEDh lOh Запись для раздела №3
lEeh-lFDh 10b Запись для раздела №4
IFEh-lFFh 02h Сигнатура таблицы разделов
('0AA55h')
IMbi. 15. Структура PTR (записи таблицы раздало*)
Офсет Размер Описание
00h Olh Если он-80Ь, то это активный раздел
Olh 03h Адрес раздела (головка, сектор, цилиндр)
04h Olh Тип системы (DOS 12bit/16bit/32bit FAT)
05h 03h Конечный адрес раздела (головка, сектор, цилиндр)
08h 04h Физический сектор для начала раздела
ОСЬ 04h Длина раздела в секторах
Мы видим, что длина MBR равна 512 байтам, то есть главная загрузочная
запись занимает точно один сектор. Сигнатура в конце отмечает, что это
законный и правильный раздел. Если вы внесете в запись изменения, то
система скажет вам: 'Invalid Partition Table'.
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
При загрузке компьютера система загружает MBR- в адрес 0000:7С00 и далее
выполняет ее код. Давайте рассмотрим код, который система выполняет при
загрузке (используйте Diskedit и загляните в физический сектор 0;
выберите только 1 сектор, затем сохраните его с помощью 'Write to
file...' в файле MBR.COM; осмотрите данный файл с помощью ТЪгЬо
Debugger). Ниже приведен дизассемблированный код для Windows 95 OSR2:
.........Начало кода MBR...........
start:
хог ах,ах ;обнуляем регистр ах
mov ss.ax ;сегмент стека = OOOOh
mov sp, 7C00h .указатель стека = 7C00h sti прерывания разрешены push ах
.делаем DS = ES = О popes push ах popds
cld ;очищаем директорию
mov si,7C1 Bh ;и начинаем копировать код из офсета 16h
movdi,061Bh ;в 0000:061 Bh
push ах .вталкиваем в стек О
push di ;вталкиваем в стек 061 Bh
mov cx,1E5h
rep movsb ;повтор, когда cx X) и перемещаем [si] в es:[cfi] retf
.дальний возврат (прыжок к 0000:061 Bh)
Здесь начинается код. Это офсет lBh. Область в 0000:7C00h свободна и
готова к получению загрузочной записи mov si, 07BEh система готова найти
активную таблицу раздела mov cl, 4
О означает неактивную таблицу раздела;
80h означает активную таблицу (только одна может быть активной).
О ПА
ГЛАВА 7. Многоцелевые вирусы
Офсет первой таблицы разделов находится в OlBEh. SI предписывается новый
офсет 061 Bh + OlBEh + OOlBh - 07BEh.
locloop_1: ; здесь CH = О
cmp [si],ch ;мы берем первый байт в таблице
jl maybe_active_part ;прыжок, если < ch (означает,
;что [SI] может быть равен 80h)
jnz Error_1 ;=> ошибка!
add si,10h .переходим к записи следующего раздела (+10h) loop locloop_1
;петля, если сх > О int 18h ;переходим к ROM (практически, никогда)
maybe_active_part:
mov dx,[si] ;dx - номер активного раздела
mov bp,si ;bp = запись для активного раздела
look: рак как мы должны иметь только одну активную часть
addsi,10h ;смотрим, имеется ли 2
dec сх ; отмечаем как активный
jz all_good ;прыжок, если СХ=0=> разделы сделаны!
cmp [si],ch ;[SI] = О?
je look ;прыжок, если равны
;если не равны, то это другой раздел,
;отмеченный иначе, чем О
Еггог_1:
mov si,71 Oh ;это указывает на 'Invalid partition table'
Предыдущая << 1 .. 74 75 76 77 78 79 < 80 > 81 82 83 84 85 86 .. 123 >> Следующая