Loading PE Headers

В основном, я пытаюсь найти последнюю секцию PE-файла. Я очень внимательно прочитал спецификацию PE, но не могу найти место, где мой код не работает.

PIMAGE_DOS_HEADER pidh = (PIMAGE_DOS_HEADER)buffer;
PIMAGE_NT_HEADERS pinh = (PIMAGE_NT_HEADERS)(pidh + pidh->e_lfanew);
PIMAGE_FILE_HEADER pifh = (PIMAGE_FILE_HEADER)&pinh->FileHeader;
PIMAGE_OPTIONAL_HEADER pioh = (PIMAGE_OPTIONAL_HEADER)&pinh->OptionalHeader;
PIMAGE_SECTION_HEADER pish = (PIMAGE_SECTION_HEADER)(pinh + sizeof(IMAGE_NT_HEADERS) + (pifh->NumberOfSections - 1) * sizeof(IMAGE_SECTION_HEADER));

buffer - байтовый массив, содержащий загруженный исполняемый файл, а pish - указатель на последнюю секцию. Почему-то кажется, что количество секций больше 20 000.

Есть идеи? Заранее спасибо

5
задан Kijan 9 January 2012 в 00:34
поделиться