Купить
 
 
Жанр: Учеба

Компьютерная вирусология ч. 1

страница №45

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

COM-программы

COM-программы содержат единственный сегмент (или, во всяком случае,
не содержат явных ссылок на другие сегменты). Образ COM-файла
считывается с диска и помещается в память, начиная с PSP:0100.
COM-программы обычно используются для небольших утилит. Они быстрее
загружаются, ибо не требуется настройки сегментов, и занимают меньше
места на диске, поскольку заголовок EXE и сегмент стека отсутствуют в
загрузочном модуле.

После загрузки СОМ-файла:

1. CS, DS, ES и SS указывают на PSP;
2. SP указывает на конец сегмента PSP (обычно 0FFFEh, но может быть
и меньше, если полный 64K сегмент недоступен, например при работе
отладчика). Слово по смещению 06h в PSP указывает, какая часть
программного сегмента доступна;
3. вся память системы за программным сегментом распределена программе;
4. слово 00h помещено (PUSH) в стек;
5. IP содержит 100h (первый байт модуля) в результате команды JMP PSP:100

EXE-программы

EXE-программы содержат несколько программных сегментов, включая
сегмент кода, данных и стека. EXE-файл загружается, начиная с адреса
PSP:0100. В процессе загрузки считывается информация заголовка EXE в
начале файла и выполняется перемещение адресов сегментов.

После перемещения управление передается загрузочному модулю
посредством инструкции далекого перехода (FAR JMP) к адресу CS:IP,
извлеченному из заголовка EXE.
В момент получения управления программой EXE-формата:

1. DS и ES указывают на PSP;
2. CS, IP, SS и SP инициализированы значениями, указанными в
заголовке EXE;
3. поле PSP MemTop содержит значение, указанное в заголовке EXE.
Обычно вся доступная память распределена программе.

0 1 2 3 4 5 6 7 8 9 A B C D E F
--------T-------T-------T-------T-------T-------T-------T-------¬
00 ¦ Sign ¦PartPag¦PageCnt¦ReloCnt¦HdrSize¦MinMem ¦MaxMem ¦ReloSS ¦
+---+---+---+---+---+---+---+---+---+---+---+---+---+---¦---+---+
10 ¦ExeSP ¦ChkSum ¦ExeIP ¦ReloCS ¦TablOff¦Overlay¦ Rel.Table El ¦
+---+---¦---+---+---+---¦---+---+---+---¦---+---+---+-------+---+
20 ¦смещ. сегмент ¦ смещ. сегмент¦ ... ... ¦ ... ... ¦
L---+---+---+---¦---+---+---+---¦---+---+---+---¦---+---+---+----

30


+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
200 начало кода EXE-программы
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

Рис.11. Структура заголовка файла EXE-формата

Как видно из рис. 11 заголовок состоит из двух частей:
форматированной части (первые 1Ch байт) и таблицы перемещения
(Relocation Table) переменного размера, причем начало таблицы
перемещений определяется значением поля TablOff (обычно это поле
содержит 1Ch, но могут быть и другие значения). Форматированная часть
заголовка включает 14 двухбайтовых полей:

Sign - "подпись" EXE-файла (4Dh 5Ah -'MZ')[0;2];
PartPag - длина неполной последней страницы (обычно игнорирует-
ся)[2;2];
PageCnt - длина образа загружаемой программы в 512-байтовых страницах,
включая заголовок [4;2];
ReloCnt - число элементов в таблице перемещения[6;2];
HdrSize - длина заголовка в 16-байтовых параграфах[8;2];
MinMem - мин. треб. памяти за концом программы (параграфы)[0Ah;2];
MaxMem - макс.треб. памяти за концом программы (параграфы)[0Ch;2];
ReloSS - сегментное смещение сегмента стека (для устан. SS)[0Eh;2]
ExeSP - значение регистра SP (указателя стека) при запуске [10h;2]
ChkSum - контрольная сумма (отрицательная сумма всех слов файла;
в существующих версия MS DOS, к сожалению, при загрузке
не проверяется) [12h;2]
ExeIP - значение регистра IP(указателя команд) при запуске[14h;2];
ReloCS - сегментное смещение код. сегмента (для устан. CS)[16h;2];
TablOff - смещение для 1-го элемента перемещения (часто 1Ch) [18h;2];
Overlay - номер оверлея (0 для главного модуля)[1Ah;2];

Как видно из приведенной структуры, заголовок EXE-файла, всегда
начинается с подписи MZ. После загрузки программы, загрузчик анализирует
эти первые два байта и, если они содержат "MZ", то рассматривает даный
файл как EXE- файл, независимо от расширения имени файла (оно может быть
и COM и BIN, а не только EXE). Эта особенность MS DOS учитывается не
всеми файловыми вирусами. Поэтому, если при заражении вирус исходит из
предположения, что тип файла соответствует расширению его имени, то он
неправильно заражает "замаскированные" EXE-файлы, которые после
заражения, естествнно, становятся неработоспобными. В то же время этот
эффект потери работоспособности является обратимым: после лечения фагом
заголовок будет восстановлен.

Обычно заголовок имеет размер 512 байт (200h) и значительная часть
его неиспользуется (содержит нули).

Файловые вирусы при заражении изменяют заголовок EXE-файла и это
обстоятельство можно использовать для контроля. Обычно файловые вирусы
изменяют значение полей ExeIP и ReloCS таким образом, чтобы они
указывали на начало тела вируса, дописанного в конце программы (перед
передачей управления программе загрузчик заносит в регистры значения из
соответствующих полей заголовка, а затем передает управление по адресу
CS:IP). Некоторые вирусы используют способ, неосторожно
"рекомендованный" Д.Н.Лозинским в документации к полифагу AIDSTEST и
основанный на корректировке соответствующего элемента Relocation Table.
Как уже указывалось, эта таблица начинается с байта, адрес которого
указан в поле TablOff (обычно 1Ch) и имеет ReloCnt элементов. Каждый
элемент занимает четыре байта и содержат два поля: "смещение" и
"сегмент":

Формат таблицы перемещения (Relocation table)
--------T-------T - - T-------T-------¬
¦ смещ. сегмент¦  ¦ смещ. сегмент¦
L---+---+---+---+ - - +---+---+---+----

Загрузчик добавляет к каждому из слов, определенных адресом
соответствующего элемента таблица перемещений, адрес начала сегмента
(обычно PSP +10h). Легко видеть, что этот процесс можно использовать для
изменения команды перехода или вызова подпрограммы, содержащегося по
адресу ReloCS:ExeIP, как бы возвращаясь тем самым к способу, обычно
применяемому вирусами при заражении COM-файла.

РЕЗИДЕНТНЫЕ ПРОГРАММЫ

Выход из программы в MS DOS можно выполнить двумя способами:

1. С помощью функции 4Ch (EXIT) в любой момент, независимо от
значений регистров.

2. С помощью функции 00h или прерывания INT 20h, когда Ваш CS
указывает на PSP.

В этих случаях занимаемая программой память освобождается.

Кроме того, MS DOS позволяет завершить программу и оставить ее
постоянно резидентной (TSR), используя либо INT 27h , либо функцию DOS
31h (KEEP). Последний способ применяется, когда резидентный код длиннее
64K или необходимо сформировать код выхода для родительского процесса.

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

ПРИЛОЖЕНИЕ 8
ПРЕРЫВАНИЯ MS DOS

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

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


Следует отметить, что в строгом смысле этого слова прерыванием
можно называть только те, которые ведут к приостановке действия текущей
программмы и выполнению каких-то дополнительных действий. Для
микропроцессора 8086/286/386 такими "строгими" прерываниями являются
только некоторые из описываемых ниже прерываний.

В MS DOS функции по управлению процессами и файловой системой также
привязаны к определенным прерываниям, однако не являются прерываниями в
строгом смысле этого слова. По сути они являются функциями - точками
входа в модуль BIOS или MS DOS реализующий соответствующую операцию.
Использование прикладной программой той или иной функции удобно
выполнять, используя обращение к соответствующему прерыванию, поскольку
отпадает необходимость знать адрес начала модуля, реализующего эту
функцию. Поэтому прерывания можно условно разделить на три группы:
Собственно прерывания, сервис и указатели:

Прерывания Сервис Указатели
----------------------- ----------------------------- --------------------
INT 00H Деление на 0 INT 10H Видео сервис INT 1dH Видео параметры
INT 01H Пошаговое INT 11H Список оборудования INT 1eH Параметры дискет
INT 02H Немаскируемое INT 12H Размер исп.памяти INT 1fH Символы графики
INT 03H Точка прерыв. INT 13H Дисковый в/в
INT 04H Переполнение INT 14H В/в через последовательный порт
INT 05H Печать экрана INT 15H Расшир.сервис AT INT 41H параметры
INT 06H (резерв) INT 16H В/в клавиатуры первого винчестера
INT 07H (резерв) INT 17H В/в принтера INT 46H параметры второго
INT 08H Таймер INT 18H ROM-BASIC винчестера
INT 09H Клавиатура INT 19H Загрузка INT 44H граф. симв. EGA
INT 0aH-0dH (hdwr ints) INT 1aH В/в таймера INT 4aH user alarm addr
INT 0eH Дискета INT 1bH Прерывание клавиатуры INT 50H CMOS timer int
INT 0fH (hdwr int) INT 1cH Пользовательское прерывание по таймеру
INT 20H-2fH Прерывания MS DOS

В микропроцессоре 8086/8088 предусмотрено 256 различных типов
прерываний. Команда INT данного микропроцессора имеет однобайтовое поле,
в котором записывается номер прерывания. Например, команда INT 21
обеспечивает обращение к 21 прерыванию (здесь и далее номера прерываний
приводятся в 16-ричной системе счисления, 21h = 33d). Поскольку вместо
адреса в команде INT указывается тип прерывания (номер), то имеется
специальная таблица прерываний, ставящая в соответствие каждому номеру
прерывания адрес подпрограммы обработки этого прерывания. В
микропроцессоре 8086/286/386 для этой цели отводятся нижние 1024 байта
памяти - по 4 байта на каждое прерывание. В процессе интерпретации
команды процессор запоминает состояние флажков в стеке (специальной
области памяти, организованной по принципу первым пришел - первым ушел),
умножает номер прерывания на 4, считывает соответствующий элемент
таблицы прерываний и выполняет переход по содержащемуся в нем адресу.
Когда подпрограмма обработки прерывания отработает, она с помощью
специальной команды восстанавливает значения флажков из стека, загружает
в соответствующие регистры адрес команды, следующей за точкой
прерывания, и возвращает управление по этому адресу.

Очевидно, что заменив адрес в таблице прерываний, можно тем самым
заменить обработчик прерываний на свой собственный. Эта операция и
называется перехватом прерывания. В приводимой ниже таблицы перечислены
основные прерывания с некоторыми пояснениями. Для экономии места
пояснения вставлены "в разрыв" таблицы. При составлении таблицы были
использованы материалы из электронного справочника TECHHELP Дана
Роллингса (D.Rollings). Изложение ориентировано на облегчение разбора
протоколов трассировки и листингов дизассемблирования программистам, не
работающим на ассемблере.

Таблица
---T---T--T----------T--------------T----------------------------------¬
¦П ¦ ¦В ¦ ¦ ¦ ¦
¦р ¦ ¦е ¦ ¦ ¦ ¦
¦е ¦ ¦р ¦ ¦ ¦ ¦
¦р ¦AH ¦с.¦ Тип ¦ Английская ¦ Перевод ¦
¦ы ¦ ¦D ¦прерывания¦ мнемоника ¦ ¦
¦в.¦ ¦O ¦ ¦ ¦ ¦
¦ ¦ ¦C ¦ ¦ ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

-==T===T==T==========T==============T==================================¬
¦00¦ - ¦- ¦ Аппарат.,¦ Divide error ¦ переполнение при делении ¦
¦ ¦ ¦ ¦ прерыв. ¦ ¦ ¦
L--+---+--+----------+--------------+-----------------------------------
Возникает после выполнения команд деления (DIV или IDIV), если
результат операции деления (частное) не умещается в поле результата, в
частности при делении на 0.


-==T===T==T==========T==============T==================================¬
¦01¦ - ¦- ¦ Аппарат.,¦ Single-step ¦ пошаговое выполнение программы ¦
¦ ¦ ¦ ¦ прерыв. ¦ ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Если установлен флаг трассировки процессора (TF=1), CPU вызывает
это прерывание после каждой команды. Некоторые вирусы используют
пошаговое выполнение программы, используют это прерывание, чтобы
определить адрес прерываний и обойти резидентные средства защиты.
Трассировка отключается (TF=0) при выполнении любой команды INT, так что
само INT 01H выполняется не в пошаговом режиме.

-==T===T==T==========T==============T==================================¬
¦02¦ - ¦- ¦ Аппарат.,¦ NMI ¦ Non-maskable interrupt ¦
¦ ¦ ¦ ¦ прерыв. ¦ ¦ (немаскируемое прерывание). ¦
L--+---+--+----------+--------------+-----------------------------------

Немаскируемое прерывание (NMI) - это единственное прерывание, не
запрещаемое командой CLI. Поэтому его можно использовать в специальных
случаях, которые требуют немедленного действия. Это прерывание
спроектировано для обработки катастрофических ситуаций, таких как сбой
питания. В системе, обеспечивающей целостность данных, NMI может,
например, выводить образ памяти на диск с целью избежать потери данных.
В стандартной системе PC BIOS, NMI аппаратно вызывается в случае "ошибки
четности" памяти. Когда это происходит, PC зависает.

-==T===T==T==========T==============T==================================¬
¦03¦ - ¦- ¦ Указатель¦ 1-Byte ¦ Прерывание по заданному ¦
¦ ¦ ¦ ¦ ¦ interrupt ¦ байту ¦
L--+---+--+----------+--------------+-----------------------------------

Вектор прерывания INT 03H используется отладчиками, чтобы
перехватывать управление, когда программа достигает указанного
пользователем адреса. Код операции для INT 03H занимает один байт
(CCh), так что им можно временно замещать начало любой команды, не
боясь затереть следующую команду.

-==T===T==T==========T==============T==================================¬
¦04¦ - ¦- ¦ Аппарат. ¦ Overflow ¦ Прерывание по переполнению ¦
¦ ¦ ¦ ¦ прерыв. ¦ ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Вектор INT 04H может использоваться как один из способов оптимизации
программ, содержащих большое число арифметических операций. Выданная
после любой арифметической операции, команда INTO осуществляет проверку
на арифметическое переполнение, и, если флаг переполнения взведен
(OF=1), вызывает прерывание INT 04H.

-==T===T==T==========T==============T==================================¬
¦05¦ - ¦- ¦ Пользов. ¦ Print-screen ¦ Печать экрана (нажатие ¦
¦ ¦ ¦ ¦ прерыв. ¦ ¦ клавиши PrtScr) ¦
L--+---+--+----------+--------------+-----------------------------------

Это прерывание вызывается обработчиком прерывания INT 09H при
распознавании клавиши PrtSc. Оно может также вызываться из программы (в
частности, вируса). Пересылает содержимое экрана активного дисплея
на принтер, если принтер свободен и находится в со стоянии "ГОТОВ".
Операция может быть прекращена по Control-Break

-==T===T==T==========T==============T==================================¬
¦08¦ ¦ ¦Аппарат. ¦TIMER TICKS ¦ Прерывание от таймера ¦
¦ ¦ ¦ ¦(8259-1, ¦ ¦ ¦
¦ ¦ ¦ ¦IRQ 0), ¦ ¦ ¦
¦ ¦ ¦ ¦прерыв. ¦ ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Прерывание от основного таймера, контролирующие системные часы и
другие системные ресурсы. Возникает каждые каждые 55мс, или около 18.2
раз в секунду. Имеет наивысший среди маскируемых прерываний приоритет.
Данное прерывание является системным и его главная функция - увеличение
значения 32 битового счетчика системных часов. Кроме того это прерывание
выключает мотор флоппи диска, если он не используется в течении 2-х
секунд. Имеется аналогичное пользовательское прерывание 1C (см. ниже).

-==T===T==T==========T==============T==================================¬
¦09¦ - ¦- ¦Аппарат. ¦KEYBOARD I/O ¦ Прерывание от клавиатуры ¦
¦ ¦ ¦ ¦(8259-1, ¦ ¦ ¦
¦ ¦ ¦ ¦IRQ 1), ¦ ¦ ¦
¦ ¦ ¦ ¦прерыв. ¦ ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Возникает при нажатии клавиши клавиатуры или их комбинации.
Заносит скан-код клавиши в буфер клавиатуры. При переполнении буфера
выдает на динамик звуковой характерный звуковой сигнал. Некоторые
комбинации нажатий клавиш вызывают специальные действия: Ctrl-Alt_Del -
перезагрузка компьютера путем прехода на по адресу; Print screen -
рассмотрено выше Ctrl-Break - вызывает прерывание1B; Pause - переводит
программу в состояние ожидания до нажатия следующей клавиши
отслеживает состояние клавиш Shift и различных Lock. Резидентные
программы, которые имеют клавишу (или комбинацию клавиш)
для вызова, перехватывают INT 09H и проверяют на определенный ключ.

-==T===T==T==========T==============T==================================¬
¦ ¦ ¦ ¦ ¦ ¦ ¦
¦0E¦ - ¦- ¦Аппарат. ¦FLOPPY DISK ¦Прерывание от дискеты ¦
¦ ¦ ¦ ¦(8259-1, ¦CONTROLLER ¦ ¦
¦ ¦ ¦ ¦IRQ 6), ¦ ¦ ¦
¦ ¦ ¦ ¦прерыв. ¦ ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Аппаратно генерируемое прерывание (IRQ 6), вызываемое контроллером
флоппи-дисков, используется прерыванием 13H

-==T===T==T==========T==============T==================================¬
¦10¦fun¦- ¦ сервис ¦VIDEO DISPLAY ¦ VIDEO ¦
¦ ¦ ¦ ¦ BIOS ¦ SERVICES ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Типичное "пользовательское" прерывание, имеющее подфункции, задаваемые
в регистре AH:

AH Сервис AH Сервис
--- ---------------------------------- --- ------------------------------
00H уст. видео режим 0aH писать символ
01H уст. размер и форму курсора 0bH выбрать палитру/цвет бордюра
02H уст. позицию курсора 0cH писать графическую точку
03H читать позицию курсора 0dH читать графическую точку
04H читать световое перо 0eH писать символ в режиме TTY
05H выбрать активную страницу дисплея 0fH читать видео режим
06H листать окно вверх (или очистить) 10H EGA:уст. палитру
07H листать окно вниз 11H EGA:генератор символов
08H читать символ/атрибут 12H EGA:специальные функции
09H писать символ/атрибут 13H писать строку (только AT + EGA)

-==T===T==T==========T==============T==================================¬
¦ ¦ ¦ ¦ ¦ ¦ ¦
¦12¦-- ¦- ¦ сервис ¦ SYSTEM ¦Размер используемой памяти ¦
¦ ¦ ¦ ¦ BIOS ¦ MEMORY SIZE ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Возвращает размер системной памяти в килобайтах в регистре AX
Это значение совпадает с тем, которое которое хранится в ячейке 0:413
(см. карту оперативной памяти а прил.3). Для PC/XT определяется во время
начальной загрузки (POST). Для AT - из CMOS-памяти. Возвращаемое
значение содержит PSP любой программы.

-==T===T==T==========T==============T==================================¬
¦13¦fun¦- ¦ сервис ¦ DISK ¦ Дисковый ввод-вывод ¦ Reset disk system
¦ ¦ ¦ ¦ BIOS ¦ SERVICES ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Этот сервис предоставляет прямой доступ к адаптерам дискеты и
винчестра. Имеет ряд подфункций ( подфункции " 8 - только для винчестера)
00h сброс контроллера 08h дать парам.диска 10h проверить готовность
01h дать статус 09h иниц табл.парам 11h рекалибрация
02h читать секторы 0Ah длинное чтение 14h диагностика
03h писать секторы 0Bh длинная запись 15h дать тип диска
04h верификация 0Ch искать цилиндр 16h изменить статус
05h форматир дорожку 0Dh альтерн.сброс 17h уст.тип диска

-==T===T==T==========T==============T==================================¬
¦14¦fun¦- ¦ сервис ¦ RS-232 SERIAL¦ Ввод-вывод через ¦
¦ ¦ ¦ ¦ BIOS ¦PORTS SERVICES¦ последовательный порт ¦
L--+---+--+----------+--------------+-----------------------------------

Эти функции BIOS предоставляют доступ к двум портам RS-232.
Начиная с 0:0400, хранятся базовые адреса до 4-х последовательных портов,
однако POST проверяет и инициализирует лишь два первых порта.

-==T===T==T==========T==============T==================================¬
¦15¦fun¦AT¦ сервис ¦ GENERAL ¦ Расширенный сервис для AT ¦
¦ ¦ ¦ ¦ BIOS ¦ SERVICES ¦ ¦
L--+---+--+----------+--------------+-----------------------------------
Прерывание 15h обрабатывает специфические функции AT:
80h Device Open 86h Wait
81h Device Close 87h Move Extended Mem Block
82h Program terminate 88h Get Extended Mem Size
83h Event wait 89h Switch to Virtual Mode
84h Joystick 90h Device Busy Loop
85h SysReq key 91h Finish Interrupt

-==T===T==T==========T==============T==================================¬
¦16¦fun¦--¦ сервис ¦ KEYBOARD ¦Сервис клавиатуры ¦
¦ ¦ ¦ ¦ BIOS ¦ SERVICES ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Обеспечивает интерфейс с клавиатурой для прикладной программы.
Нажатия клавиш на самом деле обрабатываются асинхронно на заднем плане.
Когда клавиша получена от клавиатуры, она обрабатывается прерыванием
09h и помещается в циклическую очередь (буфер клавиатуры).

-==T===T==T==========T==============T==================================¬
¦17¦fun¦--¦ сервис ¦ PRINTER ¦ Поддержка принтера ¦
¦ ¦ ¦ ¦ BIOS ¦ SERVICES ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Данное сервисное прерывание предоставляет доступ к портам
параллельных принтеров (LPT1 и т.д.). Адреса портов принтеров хранятся,
начиная с 0:0408.

-==T===T==T==========T==============T==================================¬
¦18¦ ¦ ¦ Указатель¦ TRANSFER ¦ Встроенный Бейсик ¦
¦ ¦ ¦ ¦ BIOS ¦ TO ROM BASIC ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Этот вектор содержит точку входа для интерпретатора ROM-BASIC,
который установлен только на оригинальных компьютерах фирмы IBM. Клоны
не имеют BASIC в ROM-памяти и должны использовать отдельную программу,
обычно GWBASIC. Иногда используется для обработки ситуации, когда ни
один из дисков не читается (сбоит или отсутсвует).

-==T===T==T==========T==============T==================================¬
¦19¦ - ¦- ¦ сервис ¦ BOOTSTRAP ¦ Начальный загрузчик ¦
¦ ¦ ¦ ¦ BIOS ¦ LOADER ¦ ¦
L--+---+--+----------+--------------+-----------------------------------

Выполняет попытку считывания бутсектора с дисковода А или C. Если
чтение оказалось успешным, то управление передается считанному
начальному загрузчику. Этот вектор рассматривается после POST , чтобы
попытаться загрузить и выполнить какой-либо код "начального вызова" на
дискете или винчестера. Данные в секторе 1 дорожки 0 головки 0
дисковода 0 для первого откликнувшегося диска (дискеты или винчестера)
загружаются по абсолютному адресу 0000:7c00, и управление
передается по этому адресу. Если опрос всех дисков неудаче

Список страниц

Закладка в соц.сетях

Купить

☏ Заказ рекламы: +380504468872

© Ассоциация электронных библиотек Украины

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