Уроки Iczelion'а


         

ShowSectionInfo proc uses edi mov


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
Помещаем эту строку в первую колонку.

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