Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2015_лекции / Лекция №3.1_2015

.pdf
Скачиваний:
76
Добавлен:
22.03.2016
Размер:
4 Мб
Скачать
☆

Импорт данных

Статическое связывание

Код из библиотеки целиком копируется в код программы

Динамическое связывание

загрузка символов осуществляется при загрузке программы

Связывание во время выполнения программы

LoadLibrary

GetProcAddress

LdrGetProcAddress

LdrLoadDll

Импорт данных

Символы (функции, данные) могут быть загружены из внешних DLL

Загрузка DLL происходит автоматически

DLL загружаются только один раз

Внешние адреса записываются в таблицу адресов импортов Import Address Table (IAT)

Каждой DLL соответствует структура

IMAGE_IMPORT_DESCRIPTOR

Дескриптор указывает на две структуры (списка)

Import Address Table (IAT) (заполняется загрузчиком)

Import Name Table (INT)

Символы могут быть загружены по имени или по порядковому номеру

Импорт данных

Импорт данных

Экспорт данных

Символы могут быть экспортированы по

именам (последовательность ASCII символов)

порядковому номеру

Экспортируемые функции могут быть использованы в других DLL

Адрес экспортируемых функций укахывает на имя в секции экспорта

typedef struct _IMAGE_EXPORT_DIRECTORY {

ULONG

Characteristics;

ULONG

TimeDateStamp;

USHORT

MajorVersion;

USHORT

MinorVersion;

ULONG

Name;

ULONG

Base;

ULONG

NumberOfFunctions;

ULONG

NumberOfNames;

PULONG

*AddressOfFunctions;

PULONG

*AddressOfNames;

PUSHORT *AddressOfNameOrdinals;

} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;

Экспорт данных

Экспорт Kernel32.dll:

 

 

Name:

 

KERNEL32.dll

 

Characteristics:

00000000

 

TimeDateStamp:

3B7DDFD8 -> Fri Aug 17 23:24:08 2001

Version:

 

0.00

 

Ordinal base:

 

00000001

 

# of functions:

 

000003A0

 

# of Names:

 

000003A0

 

Entry Pt

 

Ordn

Name

00012ADA

1

 

ActivateActCtx

000082C2

2

 

AddAtomA

•••remainder of exports omitted

Ресурсы

Ресурсы в формате PE похожи на архивы

Имеют древовидную структуру

Структура данных весьма сложна, однако имеются программы, которые позволяют их анализировать

Наиболее распространённые виды ресурсов:

Иконки

Версия

Графические ресурсы

Спецификация формата Microsoft PE:

http://msdn.microsoft.com/enus/magazine/ms809762.aspx

http://msdn.microsoft.com/enus/magazine/cc301808.aspx

Интрументы для анализа PE формата

Dependency Walker

http://www.dependencywalker.com/

PEBrowse Professional

http://www.smidgeonsoft.prohosting.com/pebrowsepro-file- viewer.html

PEView

http://wjradburn.com/software/

PE Explorer

http://www.heaventools.com/

Resource Hacker tool

http://www.angusj.com/resourcehacker/