Реферат: Перехват API-функций в Windows NT2000XP

IMAGE_OPTIONAL_HEADER *ioh;

IMAGE_SECTION_HEADER *ish;

IMAGE_IMPORT_DESCRIPTOR *iid;

DWORD *isd; //image_thunk_data dword

// Получаем указатели на стандартные структуры данных PE заголовка

idh = (IMAGE_DOS_HEADER*)pimage;

ioh = (IMAGE_OPTIONAL_HEADER*)(pimage + idh->e_lfanew

+ 4 + sizeof(IMAGE_FILE_HEADER));

ish = (IMAGE_SECTION_HEADER*)((BYTE*)ioh + sizeof(IMAGE_OPTIONAL_HEADER));

//если не обнаружен магический код, то у этой программы нет PE заголовка

if (idh->e_magic != 0x5A4D)

{

MessageBox(NULL, "Not exe hdr", "Error!", 0);

return;

}

//ищемсекцию .idata

for(int i=0; i<16; i++)

if(strcmp((char*)((ish+ i)->Name) , ".idata") == 0) break;

if(i==16)

{

MessageBox(NULL, "Unable to find .idata section", "Error!", 0);

return;

}

// Получаемадрессекции .idata(первогоэлемента IMAGE_IMPORT_DESCRIPTOR)

iid = (IMAGE_IMPORT_DESCRIPTOR*)(pimage + (ish +i)->VirtualAddress );

// Получаем абсолютный адрес функции для перехвата

adr_MessageBoxA = (DWORD)GetProcAddress(

GetModuleHandle("user32.dll"), "MessageBoxA");

if(adr_MessageBoxA == 0)

К-во Просмотров: 413
Бесплатно скачать Реферат: Перехват API-функций в Windows NT2000XP