PEAnatomist - внутренности PE-файлов

Тема в разделе "WASM.PROJECTS", создана пользователем RamMerLabs, 11 окт 2019.

  1. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.413
    Обновление программы до версии 0.2.8 Final (2022-03-05):

    • Добавлено отображение информации о IMAGE_DEBUG_TYPE_BBT (Basic Block Transformation)
    • Исправлена ошибка разбора заголовка CORCOMPILE_HEADER для .NetFramework 4.6 - 4.6.2
    • Добавлена поддержка IMAGE_FILE_MACHINE_POWERPCBE (Xbox 360, только несжатые PE)
    • Добавлена поддержка IMAGE_REL_BASED_HIGHADJ
    • Исправлен ряд ошибок

    Сайт программы # Подробнее об изменениях # Скачать новую версию
     
    Artem_N, Rel и Mikl___ нравится это.
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    4.844
    Вообще, надо бы какой-то еще PE- парсер попробовать потом, интерфейс PEBear'а как-то совсем не нравится.
     
  3. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.413
    Aiks и Mikl___ нравится это.
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.413
    Обновление программы до версии 0.2.10 Final Fix2 (2022-04-16):

    • Исправлена ошибка отображения данных из таблиц UnwindInfo CxxFH3 для ARM7
    • Исправлены CodeView-символы S_DEFRANGE_CONSTVAL_ON_ENTRY и S_DEFRANGE_GLOBALSYM_ON_ENTRY из VS2022 17.2Pre3
    • Устранена утечка GDI-объектов при одновременном использовании более одного диалога настройки колонок ListView

    Сайт программы # Подробнее об изменениях # Скачать новую версию
     
    Mikl___ и Rel нравится это.
  5. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    981
    Адрес:
    Россия, Нижний Новгород
    RamMerLabs, случайно не знаешь, есть ли гарантии, что ординалы имён в таблице экспортов будут отсортированы по-возрастанию? Можно ли на это полагаться при парсинге?
     
  6. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.413
    Если речь о массиве IMAGE_EXPORT_DIRECTORY.AddressOfNameOrdinals, то спецухой предусмотрена сортировка - для быстрого поиска по ординалу в случае отсутствия имени экспортируемого символа. Однако, если имя есть, то вполне можно обойтись без поиска и в отдельных интересных случаях сортировка может быть проигнорирована.
    Я бы перед использованием убедился в возрастании индексов и/или сделал бы принудительную сортировку на копии массива, если это критично.
     
  7. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    981
    Адрес:
    Россия, Нижний Новгород
    Да, о нём. Перебираю экспорты и думаю, как быстро, желательно за константное время, определить, есть ли у функции имя, и получить его.
    И такой способ существует только если есть гарантия, что ординалы отсортированы. Если же нет - остаётся только линейный поиск (если не выделять память под отсортированный массив).
    Сортировка имён в спеках прописана явно, а вот насчёт сортировки ординалов - в спеках не нашёл (и не уверен, должна ли отсортированность ординалов следовать из отсортированности имён - скорей всего не должна).
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.413
    Вы правы, явно указана сортировка индексов (называемых иногда "hint" по аналогии с импортом) в массиве имён. Признаюсь, никогда не заморачивался с признаком сортировки ординалов, т.к. обычно использую собственную копию данных, чаще в виде хеш-таблиц или деревьев.

    Ну тогда наверное остаётся ввести свойство\признак\флаг "отсортированности" массива ординалов, проверяя на возрастание индексов при загрузке файла и в зависимости от значения флага выполнять поиск перебором (в худшем случае) или бинарный.
     
  9. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.413
    Обновление программы до версии 0.2.11 Final Fix3 (2022-05-18):

    • Исправлена ошибка перечисления символа IMAGE_DYNAMIC_RELOCATION_FUNCTION_OVERRIDE в таблице DVRT
    • Добавлена отдельная страница для содержимого символа IMAGE_DYNAMIC_RELOCATION_FUNCTION_OVERRIDE в таблице DVRT (бэкпорт из 0.3.10516.1931)

    Сайт программы # Подробнее об изменениях # Скачать новую версию
     
    Rel, Mikl___ и Aiks нравится это.
  10. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.413
    Обновление программы до версии 0.2.10712.2124 (2022-07-12):
    • Устранена редкая ошибка обращения к памяти вне выделенного буфера во время распознавания типа обработчика исключений для отдельных PE
    • Устранена ошибка чтения директории IMAGE_DIRECTORY_ENTRY_DEBUG и заголовка метаданных dotNet вне выделенных буферов в некоторых искажённых PE

    Сайт программы # Подробнее об изменениях # Скачать новую версию
     
    Mikl___ и Rel нравится это.