Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




PSP (PROGRAM SEGMENT PREFIX)

Лабораторная работа №2

Изучение структур PSP, DTA, окружения MS-DOS, заголовка EXE-файла и структуры PE-файла

 

Цель работы и содержание: изучить структуры PSP, DTA, и т.д., заголовка EXE-файла и структуры PE-файла.

 

Отчет должен содержать ответы на контрольные вопросы.

 

Ход работы

PSP (PROGRAM SEGMENT PREFIX)

Его структура выглядит следующим образом:

· Смещение 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 получает контроль, когда программа завершает свою работу одним из следующих образов:

o INT 20h

o INT 27h

o 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: У это поля есть две функции:

o Сохранение командной части

o Файловый буфер по умолчанию для сохранения DTA

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


<== предыдущая страница | следующая страница ==>
Опыт ведущих стран | FCB (FILE CONTROL BLOCK)

Дата добавления: 2015-06-30; просмотров: 279; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.004 сек.