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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 9 10 11 12 13 14 < 15 > 16 17 18 19 20 21 .. 123 >> Следующая

деле СОМ-программы являются анахронизмом или, лучше сказать, реликтом тех
дней, когда ваши папы и мамы, а, возможно, дедушки и бабушки, играли в
компьютерные игры на "Синклерах", оснащенных процессорами Z80 и 8080.
В то давнее время микрокомпьютеры использовали операционную систему СР/М.
Процессор мог адресоваться только к 64 килобайтам памяти. Когда Билл
Гейтс начал протаскивать в массы свои MS-DOS и PC-DOS, операционная
система СР/М была очень популярной. Под нее писались тысячи программ
(только Applell развивал тогда свое направление). Гейтс, как обычно,
подгреб все под себя, и MS-DOS была устроена с возможностью портировать
старые программы, написанное под
ап
ГЛАВА 2. Само воспроизводство
СР/М. В конечном счете процессор 8088 стал оперировать СОМ-программами, и
с течением времени все это старье благополучно перекочевало в современные
машины.
В микропроцессоре 8088 все регистры были 16-битными. 16-битный регистр
8080 (так же, как и Z80) позволял адресоваться к 64 килобайтам памяти.
Если вам требовалось больше памяти, вы должны были иметь больше битов для
адресации к памяти. 8088 мог адресоваться к 1 Мгб памяти. Это достигалось
хитрым трюком, называемым процессом сегментации. В нем использовались два
регистра, создававшие 20-битный адрес физической памяти.
Такая регистровая пара состояла из сегментного регистра, который содержал
более важные биты адреса, и офсетного регистра с менее важными битами.
(Чтобы вы не путались с сокращениями, я спонсирую вам список регистров -
см. табл. 1.)
ТЬбл.1. Расшифровка сокращений, ассоциированных с регистрами
АХ Сумматор
ВХ Базовый регистр
СХ Счетчик
DX Регистр данных
DS Сегмент данных
ES Дополнительный сегмент
SS Сегмент стека
CS Сегмент кода
ВР Указатель базы
SI Индекс источника
DI Индекс назначения
SP Указатель стека
IP Командный указатель
41
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Сегментный регистр указывал на 16-байтовый блок памяти, а офсетный
регистр говорил, сколько байтов нужно было добавить к началу 16-байтового
блока, чтобы найти желаемый байт в памяти.
Например, если регистр ds был установлен до 1275 Hex, а регистр Ьх - до
457 Hex, то физический 20-битный адрес байта ds:[bx] был равен:
1275Н х ЮН = 12750Н + 457Н
12ВА7Н
Существовала возможность записи одного физического адреса несколькими
способами.
Например, настройка ds - 12ВA Hex и Ьх - 7 соответствовала тому же самому
физическому адресу 12ВА7 Hex. Программистам пришлось договариваться о
правилах. При написании программ для микропроцессора 8088 сегментные
регистры являлись подразумеваемыми значениями.
Например, если писалась инструкция mov ax,[bx] и регистр Ьх равнялся 7,
то регистр ах загружался словом, хранившимся в офсете 7 сегмента данных.
Сегмент данных ds никогда не появлялся в инструкциях, потому что он в них
подразумевался автоматически. Например, если ds = 12ВАН, то вам следовало
загрузить слово, хранящееся в физическом адресе 12ВА7Н.
Микропроцессор 8088 имел четыре сегментных регистра: cs, ds, ss и es. Они
назывались Code Segment (сегмент кода), Data Segment (сегмент данных),
Stack Segment (сегмент стека) и Extra Segment (дополнительный сегмент).
Все они служили разным целям.
Регистр cs определял 64К-сегмент, где располагались программные
инструкции, выполняемые процессором.
Сегмент данных указывал место для размещения данных программы.
42
ГЛАВА 2. Самоврспроизводство
Сегмент стека определял, где расположен стек программы.
Регистр es отдавался в распоряжение программиста. Он мог использоваться
для указания сегмента видеопамяти, для записи данных в видеопамять или в
сегмент 40Н, где BIOS хранит критически важную информацию о
низкоуровневой конфигурации компьютера.
COM-файлы, как пережитки времен с 64К доступной памяти, использовали
только один сегмент. Перед выполнением СОМ-файла DOS устанавливал все
сегментные регистры до одного значения: cs*ds,xes*ss. Все данные
сохранялись в одном и том же сегменте, как и код самой программы.
Так как любой сегмент равнялся 64К, СОМ-программа могла использовать для
кода, данных и стека, максимум, 64К. И поскольку сегментные регистры
только подразумевались в инструкциях, обычная СОМ-программа (не
нуждавшаяся в данных BIOS или видеоданных) никогда не заботилась о них.
Наша программа FLY - хороший пример. Она не содержит прямых ссылок на
какой-либо сегмент. DOS может загрузить ее в любой сегмент, и она
спокойно будет там работать.
Перед загрузкой COM-файла в сегмент в офсете 100Н, этот сегмент
настраивался DOS. Кроме того, DOS создавала PSP (Program Segment Prefix -
префикс программного сегмента) в памяти от офсета 0 до 0FFH (см. табл.
2).
PSP - это тоже наследие от операционной системы СР/М, когда ОС хранила
важные данные о системе в низкой памяти. Большая часть PSP вообще не
используется. Например, она содержит блоки контроля файлов (FCB - file
control blocks) для открытия/чтения/записи/закрытия файла с помощью
функций DOS - 0FH, ЮН, 14Н, 15Н и т. д.
Предыдущая << 1 .. 9 10 11 12 13 14 < 15 > 16 17 18 19 20 21 .. 123 >> Следующая