Assembler for newbies in Low level Programming

Ассемблер для новичков в низкоуровневом программировании.


выпуск 6


14.10.2006 20:21

some about MS DOS



   Система операционная. Комплекс программ, постоянно находящихся в памяти
ЭВМ, позволяющих организовать управление устройствами машины и её взаимодействие
с пользователями; англ. operating system; нем. Betriebssystem.
 Терминологический словарь по основам информатики и вычислительной техники.
      1991г.



ЗАГРУЗКА MS-DOS

   Процесс загрузки осуществляется следующим образом. Сначала в память загружается системный загрузчик, затем - системные файлы IO.SYS, MSDOS.SYS и COMMAND.COM (см.гл.11).
   Загрузчик проверяет, являются ли файлы IO.SYS и MSDOS.SYS первыми файлами на диске. Если результат проверки положительный, то файлы загружаются в память, причем выбирается свободный участок с самым младшим адресом. Затем управление передается инициализирующему модулю файла IO.SYS. Далее - управление передается MSDOS.SYS который инициализирует оборудование и т.п. После чего управление возвращается в IO.SYS
   Он проверяет наличие файла CONFIG.SYS и запоминает дисководы указанные в нем. -вызывается функция 4Bh - системный загрузчик, загружающий программы в память, и передающий управление на них. (EXEC называется)
Обычно загружает COMMAND.COM командную оболочку.

PSP

При запуске программы, msdos формирует для нее PSP:
PSP - Префикс программного сегмента PSP

Pис.1:

    Вот более подробное описание, взятое из путеводителя по написанию ДОС вирусов.


"""

Смещение 0000h: INT 20h - это устаревший метод для прекращения работы программы, вместо которого используется функция 4Ch INT21h.

Смещение 0002h: Дальше идет указатель на следующий сегмент, расположенный после нашей программы. Мы используем его, чтобы узнать, сколько памяти DOS выделил нам (вычитая смещение, на которое он указывает от смещения 0000 нашего PSP). Hам возвращается память в параграфах, поэтому мы должны умножить его на 16, чтобы получить pазмеp в байтах.

Смещение 0005h: Это довольно любопытный путь вызова INT 21h. И, конечно, мы можем использовать его в своих целях. Функции находятся в CL вместо AH, и мы можем использовать только функции меньше 24h. Я объясню больше в главе TUNNELING.

Смещение 000Ah: Здесь мы сохраняем оригинальные векторы INT 22h. INT 22h получает контроль, когда программа завершает свою работу одним из следующих образов:
INT 20h
INT 27h
INT 21h (функции 00h, 31h, 4Ch)

Смещение 000Eh: Здесь мы сохраняем векторы другого int, INT 23h. Это прерывание обрабатывает комбинацию CTRL+C.

Смещение 0012h: Здесь сохранено другое прерывание - INT 24h. Оно обрабатывает критические ошибки. Примеры подобных ошибок? Hапример, когда в вашем дисководе нет дискеты или она защищена от записи.

Смещение 002Ch: Здесь начинается блок окружения.

Смещение 005Ch: В этом поле сохранен первый FCB (File Control Block) по умолчанию. Это путь для получения доступа к файлам обычно не используется программами (он существует для совместимости со старыми версиями DOS'а), но вирмейкеры обычно используют его для реализации невидимости. Смотрите структуру FCB за дополнительной информации.

Смещение 006Ch: Это второй FCB по умолчанию.

Смещение 0080h: У это поля есть две функции: Сохранение командной части Файловый буфер по умолчанию для сохранения DTA Эти функции не могут жить вместе, поэтому когда стартует программа, первое, о чем мы должны подумать - это командная часть. Если она нам нужна, я рекомендую вам сохранить ее в надежное место (переменная в нашем коде). Первый байт командной части (80h) содержит ее длину, а дальше находятся реальные параметры. Структура DTA будет объяснена в той же главе.

FCB (FILE CONTROL BLOCK)

Есть два вида FCB: обычные и расширенные. Здесь приводится структура обычного FCB.
Рис.2

Если FCB расширенные, все вышеуказанные смещения сдвигаются на семь байтов, а первые 7 байтов выглядят следующим образом:
Pис.3

DTA (DISK TRANSFER AREA)

Эта структура очень важна в написании вирусов. Давайте посмотрим ее:
Pис.4

Оригинальный DTA сохраняется по смещению 80h в PSP. Мы можем сохранить его с помощью функции 1Ah INT 21h.

"""

Стандартная структура памяти msdos


Рис.5

По всем возникающим вопросам обращайтесь, всегда помогу.
Skif_Q ведущий рассылки.
mailto:skif_q@mail.ru




Последнюю версию рассылки (с исправленными ошибками), а так-же приложение, со списком
функций ДОС-а, списком регистров, описанием команд, и многого другого,
вы найдете на ass3mbler.narod.ru

The End.

Хостинг от uCoz