Истории о вирусах

         

Формат заголовка NE-executable ЕХЕ-файла


В состав старого заголовка входят:

- обычный ЕХЕ-заголовок (Таблица А-2);

- зарезервированная часть;

- указатель на новый заголовок (если в ЕХЕ-заголовке в начале таб-

лицы перемещаемых элементов - по смещению 18h - стоит 40h или

больше, то слово, расположенное по смещению 3Ch, содержит сме-

щение начала нового заголовка);

- DOS-программа (STUB).

В состав нового заголовка входят:

- инфоблок (Таблица А-3);

- таблица сегментов (Таблица А-4);

- таблица ресурсов (Таблица А-5);

- таблица резидентных имен;

- таблица ссылок на модули;

/



Таблица А-2. Формат обычного ЕХЕ-заголовка в NE-executable ЕХЕ-файпе.

Смещ.

Описание

+00h

HdrSize - длина заголовка в параграфах (по 16 байт)

+20h

Резерв

+3Ch

Смещение начала нового заголовка

+40h

DOS-программа (STUB)

Таблица А-3. Формат NE-заголовка.

Смещ.

Описание

+00h

Сигнатура NE-executable ('NE')

+02h

Версия редактора связей

+03h

Номер версии редактора связей

+04h

Смещение таблицы входов (относительно начала заголовка)

+06h

Длина таблицы входов (в байтах)

+08h

Зарезервировано: 32-битная контрольная сумма

+OCh

Набор флагов: (16 бит)

Бит 0

SINGLEDATA, в файле содержится только один сегмент данных.

Если файл является DLL, бит устанавливается редактором связей

Таблица А-3. Формат NE-заголовка. (Продолжение}

Смещ.

Описание

+OCh

Набор флагов: (16 бит)

Бит1

MULTIPLEDATA, в файле содержится несколько сегментов

данных. Независимо от этого формат файла NOAUTODATA,

и в нем нет автосегментов данных

 

Бит 2

Зарезервировано

 

БитЗ

Файл может быть загружен только в защищенном режиме

 

Бит 8

Содержится код, не совместимый с библиотеками MSWindows для

OS/2

 

Бит 9

Код, совместимый с библиотеками MS Windows

 

Бит 11

В первом сегменте содержится код, загружающий прикладную

программу

Бит 13

Файл был создан, несмотря на обнаруженные редактором связи

ошибки

Бит 14

Исполняемый файл размещается в EMS

Бит 15

Библиотечный модуль. При загрузке библиотеки CS:IP указывает

на процедуру инициализации, а регистр АХ равен определителю

модуля

+OEh

Число автосегментов данных: если SINGLEDATA равен нулю,

MULTIPLEDATA не указывается

+10h

Начальный размер (в байтах) локальной кучи. При ее отсутствии равен нулю

+12h

Начальный размер стека (в байтах). Равен нулю, если SS не равно DS,

как в библиотеках

+14h

CS:IP

+18h

SS:SP

+lCh

Число входов в таблице сегментов

+lEh

Число входов в таблице ссылок на модули

+20h

Число байт в таблице нерезидентного имени i

+22h

Относительное смещение начала таблицы сегментов от начала нового

заголовка

+24h

Относительное смещение начала таблицы ресурсов от начала нового

заголовка

+26h

Относительное смещение начала таблицы резидентного имени от начала

нового заголовка

<
Таблица А-3. Формат NE-заголовка. (Окончание)



Смещ.


Описание


+28h


Относительное смещение начала таблицы ссылок на модули от начала

нового заголовка


+2Ah


Относительное смещение начала таблицы импортируемых имен от начала

нового заголовка


+2Ch


Относительное смещение начала таблицы нерезидентных имен от начала

файла


+30h


Число перемещаемых точек входа^-


+32h


Множитель смещении. Используется при размещении логических секторов.

Выражается степенью логарифма по основанию 2.

По умолчанию равен 9 (512)


+34h


Число ресурсных сегментов


+36h


Флаги, определяющие рабочую операционную систему


Бит 0


Неизвестная


Бит1


OS/2


Бит 2


Microsoft Windows


БитЗ


Зарезервировано


Бит 4


Зарезервировано


+37h


Дополнительные флаги


Бит1


Программа для Windows 2.x. Может быть запущена в защищенном

режиме версии З.х


Бит 2


Программа для 2.x. Может использовать пропорциональные

шрифты


БитЗ


В файле содержится область быстрой загрузки


+38h


Указатель начала области быстрой загрузки (используется только Windows)


+3Ah


Длина области быстрой загрузки (используется только Windows)


+3Ch


Зарезервировано '


+3Eh


Версия Windows (используется только Windows)
Таблица А-4. Формат таблицы сегментов.



Смещ.


Описание


+00h


Смещение логического сектора (в байтах)относительно начала файла. При

отсутствии сегмента данных равно нулю


+02h


Длина сегмента в файле. Если значение 0, то смещение 64 Кбайт


+04h


Флаги


 


Бит 0


Сегмент данных, иначе сегмент кода


 


Бит 1


В загрузчике имеется память, отведенная для сегмента


 


Бит 2


Сегмент загружен


 


БитЗ


Зарезервировано


Бит 4


MOVEABLE сегмент, иначе - FIXED


БитЗ


Сегмент PURE или SHAREABLE, иначе - IMPURE или

NONSHAREABLE


Бит 6


PRELOAD сегмент, иначе - LOADONCALL


Бит?


Для сегмента кода - EXECUTEONLY, для сегмента данных -

READONLY


Бит 8


В сегменте содержатся перемещаемые данные


Бит 9


Подстраивающийся сегмент


Биты 10,11


Зарезервировано


Бит 12


Сбрасываемый (discardable) сегмент


Биты 13-15


Зарезервировано


+06h


Минимальный объем (в байтах), необходимый для размещения сегмента

(0 соответствует 64Кбайт)
<


Таблица А-5. Формат таблицы ресурсов.

Смещ. Описание
+00h Единица смещения данных ресурса
+02h Тип ресурса. Если установлен старший бит, то это один из типов ресурсов,

описанных в Windows.h, иначе это смещение относительно начала таблицы

ресурсов строки, указывающей тип ресурса. Тип ресурса 0 указывает на

конец записей ресурсов
+04h Число ресурсов данного типа
+06h Зарезервировано
+OAh Смещение данных ресурса относительно начала файла в единицах,

указанных в начале таблицы ресурсов
Таблица А-5. Формат таблицы ресурсов. (Окончание)
Смещ. Описание
+OCh Длина ресурса (в байтах)
+OEh Флаги
Бит 4 MOVEABLE
Бит 5 PURE - возможность совместного использования
Бит 6 PRELOAD - предварительно загружаемый
+10h Определяет (если старший бит равен единице) или указывает на ID ресурса

смещение относительно начала таблицы ресурсов
+12h Зарезервировано
+16h Длина или имя типа. Ноль находится в конце таблицы ресурсов
+17h Определяет тип ресурса или текст имени. В имени различаются кейсы
Таблица А-6. Таблица входов перемещаемого сегмента.
Смещ. Описание
+00h Флаги
  Бит 0 Экспортируемый вход
  Бит1 Сегмент совместно использует глобальный сегмент данных
  Биты 3-7 Если в ЕХЕ-файле содержится код, выполняющий кольцевые

переходы, то это - число слов, составляющих стек. Во время

кольцевых переходов эти слова должны копироваться из одного

кольца в другое
+01h Инструкция INT 3Fh
+03h Номер сегмента
Таблица А-7. Таблица входов фиксированного сегмента.

Смещ. Описание  
+00h Флаги
Бит 0 Экспортируемый вход '
Бит1 Сегмент совместно использует глобальный сегмент данных
Биты 3-7 Если в ЁХЕ-файле содержится код, выполняющий кольцевые

переходы, то это - число слов, составляющих стек. Во время

кольцевых переходов эти слова должны копироваться из одного

кольца в другое
+01h Смещение сегмента
- таблица импортируемых имен;

- таблица входов (Таблицы А-6 и А-7);

- таблица нерезидентных имен.

В заголовке нового стиля содержится вся информация, необходимая

для сегментированного исполняемого файла - заголовки таблицы сег-

ментов, ресурсов и имен.

Сразу за заголовком находится таблица сегментов. В ней содержится

описание каждого сегмента исполняемого файла.


Содержание раздела







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий