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

//Вычисляем смещение таблицы импорта в секции

//импорта относительно ее начала (секции).

LPVOID ImportTable;

(DWORD)ImportTable = ImportRVA - sect->VirtualAddress;

(DWORD)ImportTable = (DWORD)ImportSecBeg

+ (DWORD)ImportTable;

IMAGE_IMPORT_DESCRIPTOR *DLLInfo = (IMAGE_IMPORT_DESCRIPTOR *)ImportTable;

LPVOID DLLName;

DWORD DLLCounter = 0;

//Выводим информацию об используемых DLL

while (DLLInfo->Name != NULL)

{

DLLCounter++;

(DWORD)DLLName = (DWORD)DLLInfo->Name - sect->VirtualAddress;

(DWORD)DLLName = (DWORD)ImportSecBeg + (DWORD)DLLName;

Log->Lines->Add(IntToStr(DLLCounter)+"->"+(LPSTR)DLLName);

Application->ProcessMessages();

DLLInfo++;

}

Log->Lines->Add("Всегоиспользуется "+IntToStr(DLLCounter) + " библиотек.");

4. Определяем, имеется ли в файле достаточно свободного места для размещения новой таблицы импорта.

//Вычисляем размер новой таблицы импорта:

//Суммируем количество уже используемых DLL + наша DLL + zero запись.

DWORD NewImportTableSize = sizeof(IMAGE_IMPORT_DESCRIPTOR)*(DLLCounter+2);

char dllName[] = "azx";

NewImportTableSize += strlen(dllName)+1;

//Получаем файловый указатель на конец секции импорта.

LPVOID pos;

(DWORD)pos = AfterImportSecBeg-1;

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