главная программы pe explorer обзорный тур
Редактор заголовков секций PE файла
Просмотр информации о секциях. Экспорт и удаление секций.
Всё, что считается важным кодом или данными, хранится в PE файле в отдельной секции. Например, весь программный код хранится в секциях .text или CODE, таблицы импортируемых и экспортируемых функций - в секциях .idata и .edata, ресурсы - в секции .rsrc, и т.д.
PE Explorer отображает всю информацию об имеющихся в файле секциях. В таблице Section Headers вы можете видеть количество секций, их названия, адреса, размер, характеристики и наличие на них ссылок из Data Directories. Все данные, представленные в таблице, можно сохранить на диск в виде текстового отчёта.
Двойной щелчок по выбранной секции откроет окно просмотра содержимого секции в виде hex дампа. Одновременно можно открыть до 16-ти таких окон. Чтобы сохранить содержимое всех секций на диск, нажмите кнопку Save Sections на панели инструментов.
Чтобы удалить секцию, нажмите кнопку Delete Section на панели инструментов (пятая икона слева). Удалить можно только те секции, которые отмечены зелёной точкой, что означает, что на них нет ссылок. Красными и жёлтыми точками отмечены секции, на которые есть ссылки соответственно из заголовка файла и из Data Directories.
Чтобы изменить название выбранной секции, её размер или характеристики, нажмите кнопку Section Editor на панели инструментов (третья икона слева).
Редактор секций, восстановление характеристик секций
Section Editor служит для редактирования названия и размера секции, восстановления утраченных значений и коррекции характеристик секции. Для облегчения расчёта значения Size of Raw Data в редактор встроен специальный калькулятор.
В верхней части окна редактора в разделе Header Report отображаются значения, сообщаемые заголовком секции, и, дополнительно, два значения указателей в файле к началу данных, принадлежащих данной секции. Первое из них (Hdr Ptr to Raw Data) содержит значение, записанное в заголовке секции. Второе значение (Abs Ptr to Raw Data) отображает реальное (абсолютное) значение смещения. В целых файлах эти два значения совпадают, в повреждённых файлах они будут отличаться. Кроме того, там же расположена кнопка Restore All, позволяющаяя восстановить все значения, изменённые в процессе редактирования.
В некоторых случаях, например, после сжатия и последующей распаковки исполняемого файла, оригинальные значения смещений секций на реальные данные в файле оказываются утеренными. Так же могут быть нарушены характеристики секции, которые определяют поведение секции во время исполнения файла. Всё это в целом и по отдельности может отразиться на правильной работе файла либо привести к его полной неработоспособности.
У любого PE Executable (кроме тех случаев, когда в файле содержатся только ресурсы или иные не исполняемые данные) среди всех секций присутствует одна, либо несколько (обычно у драйверов) секций, у которых должны быть выставлены следующие флаги: IMAGE_SCN_CNT_CODE и IMAGE_CSCN_MEM_EXECUTE. Наличие данных флагов указывает OS на то, что данные из этой секции могут исполняться. PE Explorer дизассемблирует код ТОЛЬКО в тех секциях, для которых эти флаги определены. Это позволяет избежать дизассемблирования данных.
Восстановление утерянных значений - задача сложная, и во многом зависит от интуиции и предположений, основанных на имеющемся опыте. Автоматизировать этот процесс практически невозможно. Тем не менее, редактор секций в PE Explorer предлагает полу-автоматическое решение этой проблемы.
Восстановить сбитые флаги характеристик можно тремя способами:
- Кнопка Repair автоматически расставит флаги в соответствии с рекомендованными для секции данного типа значениями.
- Выбрать из выпадающего списка Section type подходящий тип секции и применить её типовой набор флагов к вашей секции.
- Расставить флаги вручную, отметив чекбоксы в правой панели Characteristics.
Кнопка Restore позволит вернуть исходные значения флагов, полученные из заголовка секции.
Section Alignment - отображает значение выравнивания данной секции в памяти после загрузки программы. На данную величину должны быть выравнены все виртуальные адреса (Virtual Addr) в заголовках секций. Значение берется из Optional header.
File Alignment - отображает значение выравнивания данной секции в файле. На данную величину должны быть выравнены все смещения к данным секции (Ptr to Raw Data) в заголовках секций. Значение берется из Optional header.
Typical Characteristics settings - в этом поле отображается значение характеристик, наиболее типичных для данного типа секции.
Кнопка Global Lock/Unlock values - запрещение/разрешение модификации любых значений. В случае, когда модификация запрещена, кнопка Restore All всё же позволяет востановить все значения к исходному виду.
Кнопка Calculate <Size of Raw Data> - вызывает калькулятор, позволяющий облегчить расчёт значения Size of Raw Data. Все дело в том, что это значение так же должно (но не обязано) быть выравненным на границу File Alignment. Расчёт может быть проведен двумя способами:
- Указанием значения размера. В этом случае производится автоматическое выравнивание введённого значения на величину File Alignment.
- Указанием смещения к следующей секции.
Кнопка Lock <Pointer to Raw Data> - запрещение/разрешение модификации значения Abs Ptr to Raw Data.
Ниже расположено окно просмотра дампа File Image. В нём, слева, находится кнопка Go to original <Pointer to Raw Data>. С её помощью можно быстро вернутся к началу просматриваемой секции.
Значками и соответственно отмечаются Original <Pointer to Raw Data> и Original <Pointer to Raw Data> + <Size of Raw Data>.
Если модификация значения <Abs Ptr to Raw Data> разрешена, то при пролистывании дампа это значение будет автоматически обновляться.
См. также: Коррекция ошибок в файле
Скачать 30-дневную пробную версию PE Explorer Купить лицензию