2015_лекции / Лекция №3.1_2015
.pdf
Импорт данных
Статическое связывание
Код из библиотеки целиком копируется в код программы
Динамическое связывание
загрузка символов осуществляется при загрузке программы
Связывание во время выполнения программы
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/
