Уроки Iczelion'а




Урок 5. Таблица секций - часть 5


ShowSectionInfo proc uses edi mov edi, pMapping assume edi:ptr IMAGE_DOS_HEADER add edi, [edi].e_lfanew assume edi:ptr IMAGE_NT_HEADERS mov ax,[edi].FileHeader.NumberOfSections movzx eax,ax mov NumberOfSections,eax add edi,sizeof IMAGE_NT_HEADERS invoke DialogBoxParam, hInstance, IDD_SECTIONTABLE,NULL, addr DlgProc, edi ret ShowSectionInfo endp end start

Анализ:

В этом примере частично используется код примера ко второму туториалу. После этого проверяется, является ли файл верным PE, а затем вызывается функция ShowSectionInfo.

ShowSectionInfo proc uses edi mov edi, pMapping assume edi:ptr IMAGE_DOS_HEADER add edi, [edi].e_lfanew assume edi:ptr IMAGE_NT_HEADERS

Мы используем edi в качестве указателя на данные в PE-файле. Во-первых, мы присваиваем ему значение рMaрing, которое является адресом DOS-заголовка. Затем мы добавляем к нему значение e_lfanew - теперь edi содержит адрес PE-заголовка.

mov ax,[edi].FileHeader.NumberOfSections mov NumberOfSections,ax

Так как нам нужно перейти к таблице секций, мы должны получить количество секций в этом файле. Это значение параметра NumberOfSections в заголовке файла. Hе забудьте, что этот параметр размером в слово.

add edi,sizeof IMAGE_NT_HEADERS

Сейчас edi содержит адрес PE-заголовка. Последний мы добавляем к первому, и в результате edi будет создержать адрес таблицы секций.

invoke DialogBoxParam, hInstance, IDD_SECTIONTABLE,NULL, addr DlgProc, edi

Вызываем DialogBoxParam, чтобы показать диалоговое окно, содержащее listview-контрол. Отметьте, что мы передаем адрес таблицы секций в качестве последнего параметра. Это значение будет доступно в lParam во время обработки сообщения WM_INITDIALOG.

Во время этого мы сохраняем значение lParam (адрес таблицы секций) в esi, номер секций в edi, а затем выводим listview-контрол. Когда все готово, мы входим в цикл, который должен вставить информацию о каждой секции в этот контрол. Эта часть очень проста.

.while edi>0 mov lvi.iSubItem,0

Помещаем эту строку в первую колонку.




Содержание  Назад  Вперед