Реферат: Жесткое внедрение DLL в Windows-программы

DWORD NewImportTableRVA = (DWORD)OldFreePtr - (DWORD)ImportSecBeg +

sect->VirtualAddress;

// Заносимегов DataDirectory

pe_opt_head->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress =

NewImportTableRVA;

pe_opt_head->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size =

(DLLCounter + 1) * sizeof(IMAGE_IMPORT_DESCRIPTOR);

UnmapViewOfFile(fBeg);

CloseHandle(fMap);

Вывод

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

Создание таблицы импорта в другой секции (если в секции с оригинальной таблицей не хватает места)

Создание новой секции и хранение новой таблицы импорта в ней.

Отдельное слово стоит сказать об .exe файлах, входящих в стандартную поставку Windows(таких как calc.exe, paint.exe, wordpad.exe, etc.). У них таблица импорта продублирована в начале файла, между MZ- и PE- заголовками, поэтому при модификации таких файлов необходимо в соответсвующих записях в DataDirectory обнулить адреса на эти таблицы (подробнее см. файл winnt.h, раздел Directory Entries).

К-во Просмотров: 2267
Бесплатно скачать Реферат: Жесткое внедрение DLL в Windows-программы