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

         

Заражение файлов формата PE-executable


Определение положения начала РЕ-заголовка происходит аналогично

поиску начала NE-заголовка. Если смещение таблицы настройки адре-

сов (поле 18h) в заголовке ЕХЕ-файла 40h или больше, то по смещению

ЗСЬ находится смещение PE-executable заголовка. Сигнатура PE-execu-

table ("РЕ") находится, как и у NE-executable ЕХЕ-файла, в начале но-

вого заголовка.

Внутри РЕ-заголовка находится таблица объектов. Ее формат наиболее

важен по сравнению с прочими. Для добавления вирусного кода в но-

ситель и перехвата вирусом управления необходимо добавить элемент

в таблицу объектов.

Основные действия заражения PE-executable файла:

1. Найти смещение заголовка PE-executable в файле.

2. Считать достаточное количество информации из заголовка для

вычисления его полного размера.

3. Считать весь РЕ-заголовок и таблицу объектов.



4. Добавить новый объект в таблицу объектов.

5. Установить точку входа RVA на новый объект.

6. Дописать вирус к файлу по вычисленному физическому смещению.

7. Записать измененный РЕ-заголовок в файл.

Для определения расположения таблицы объектов следует воспользо-

ваться значением переменной "HeaderSize" (не путать с "NT

headersize"), которая содержит совместный размер заголовков DOS, РЕ

и таблицы объектов.

Для чтения таблицы объектов необходимо считать HeaderSize байт

от начала файла.

Таблица объектов расположена непосредственно за NT-заголовком. Зна-

чение "NTheadersize" показывает количество байт, следующих за полем

"flags". Итак, для определения смещения таблицы объектов нужно по-

лучить NTheaderSize и добавить размер поля флагов (24).

Добавление объекта: получив количество объектов, умножить его на 40

(размер элемента таблицы объектов). Таким образом определяется сме-

щение, по которому будет расположен вирус.

Данные для элемента таблицы объектов должны быть вычислены с исполь-

зованием информации в предыдущем элементе (элементе носителя).

RVA=((prev RVA+prev Virtual Size)/OBJ Alignment+1)

*OBJ Alignment

Virtual Size=((size of virus+buffer any space)/OBJ Alignment+1)

*OBJ Alignment

Physical Size=(size of virus/File Alignment+1 )*File Alignment

Physical Offset=prev Physical Offset+prev Physical Size

Object Flags=db 40h,0,O.COh

Entrypoint RVA=RVA

Теперь необходимо увеличить на единицу поле "количество объектов"

и записать код вируса по вычисленному "физическому смещению"

в размере "физического размера" байт.



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







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