Архив задач

[11] DLL Hijacking в1

В разделе импорта заголовка исполняемого файла содержится информация о подключаемых библиотеках (DLL) и импортируемых из них функциях. Для подмены одной из DLL необходимо, чтобы имя библиотеки и набор функций совпадали с именем библиотеки и набором функций, описанными в разделе импорта исполняемого файла. Для упрощения разработки подменяемой библиотеки DLL, из всех библиотек выбирают ту, из которой импортируется наименьшее количество функций. 
Из предоставленного образа раздела импорта определите имя библиотеки, из которой импортируется наименьшее количество функций.
В ответе укажите имя библиотеки DLL, имена импортируемых из нее функций и количество аргументов каждой из таких функций.

Структура раздела импорта показана на рисунке.
4в1_0.png 
Рисунок. Структура раздела импорта

ImportTable – таблица импорта. Хранится в начале раздела импорта. Содержит адреса (4-х байтовые) на структуры LibraryInfo. В конце таблицы записывается 4 нулевых байта (0x00000000).

LibraryInfo – структура, содержащая информацию о библиотеке. Содержит поля:

Name – адрес строки (4 байта), содержащей имя библиотеки. Строка заканчивается нулевым байтом ('\0');

NamesTable – адрес таблицы имен импортируемых функций (4 байта);

OrdinalsTable – адрес таблицы идентификаторов импортируемых функций (4 байта).

NamesTable – таблица имен импортируемых функций. Каждая запись содержит следующие параметры:

Fun_Name – адрес строки (4 байта), содержащей имя функции. Строка заканчивается нулевым байтом ('\0');

Fun_ParamsCount – количество аргументов функции (4 байта).

В конце таблицы записывается 4 нулевых байта (0x00000000).

OrdinalsTable – таблица идентификаторов импортируемых функций. Каждая запись содержит следующие параметры:

Fun_Ordinal – идентификатор функции (4 байта);

Fun_ParamsCount – количество аргументов функции (4 байта).

В конце таблицы записывается 4 нулевых байта (0x00000000).

Все адреса и числовые значения хранятся в формате Little-Endian. Адреса указываются относительно начала раздела импорта, адрес которого считается равным 0x00000000.

К задаче прилагается (ZIP-архив): 
файл образа раздела импорта dump_v1.bin.