1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

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

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

  1. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.368
    Доброго дня!
    Хочу поделиться небольшой программкой для просмотра внутренностей PE-файлов - PEAnatomist. Да, это очередной просмотрщик PE. Но с некоторыми востребованными (по крайней мере мной:) ) возможностями, которых мне не удалось найти нигде более.

    [​IMG]

    Помимо обычного набора из базовых заголовков, импорта, экспорта, ресурсов и т.д. PEAnatomist глубоко вонзает "скальпель" в таблицы Base Relocations, LoadConfig и ExceptionsData.
    Вскрываются все поля и таблицы из LoadConfig - вплоть до самых свежих из Win SDK 18362 (Enclave и Volatile Metadata). Производится лёгкий анализ содержимого по релоцируемым VA, в т.ч. для специфичных типов релокации архитектур ARM7 Thumb и IA64. И, наконец, полный разбор таблиц ExceptionsData для архитектур x64, ARM7, ARM7 Thumb, ARM64, IA64 и специфичных для языка данных.

    [​IMG] [​IMG]
    Например так отображается таблица Exceptions для x64 и для ARM64 с разбором кодов раскрутки.

    [​IMG]
    На закуску ещё есть декодирование всех элементов из Rich-подписи с указанием всех используемых при создании PE инструментов, отображение многих типов отладочной информации.

    Установка программы не требуется, дополнительных зависимостей нет. Административные права программа не требует, но без них не получится добавить ассоциации с файлами в проводнике. Программа никуда кроме файла настроек (в %appdata%) ничего не пишет, не отправляет.

    Ознакомиться подробнее с возможностями программы и скачать её можно на сайте программы.

    Новая версия 0.1.5 (2019-11-09): Скачать

    Надеюсь, кому-нибудь ещё программа окажется полезной.
     
    Последнее редактирование: 9 ноя 2019 в 01:55
    eroha, M0rg0t, hiddy и 2 другим нравится это.
  2. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.368
    Обновление программы до версии 0.1.2 (2019-10-18):
    -Исправлено отображение иконки исследуемого файла на панели задач
    -Исправлено падение на 16-битных и иных MZ не-PE32 файлах
    -Добавлено отображение ошибок при загрузке файла и уведомление о нехватке прав для изменения ассоциаций
    -Оптимизация размера данных
    -Оптимизация скорости разбора таблиц ExceptionsData

    Тестирование на моей аппаратуре показало ускорение разбора таблицы Exceptions в худшем случае в ~5 раз, в основном в ~8.7 раза. Многопоточности пока ещё нет, на очень больших файлах (больше 100 МБ) GUI ещё подвисает (вплоть до 1-2 минут :-[ ).

    Сайт программы # Скачать новую версию
     
    Mikl___ нравится это.
  3. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.368
    Обновление программы до версии 0.1.3 (2019-10-19):
    -Исправлен баг в разборе таблиц ExceptionsData для x64

    Из-за чудовищной опечатки (edx вместо eax) некорректно работала функция разбора ExceptionsData для x64 на небольших файлах (на больших файлах значение edx начинало проходить через условие).
    Кроме того ещё на ~8% ускорена обработка вышеупомянутой таблицы.

    Сайт программы # Скачать новую версию
     
  4. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.368
    Обновление программы до версии 0.1.4 (2019-10-31):
    - Исправлены ошибки в разборе заголовков LSDA в таблице ExceptionsData
    - Добавлен разбор LSDA для C Builder версий 10.2 и выше
    - Добавлена возможность передачи имени файла через командную строку без дополнительных параметров
    - Исправлена мелкая ошибка в обработке имени файла
    - Добавлен список недавних файлов в меню
    - Структура файла настроек модифицирована без обратной совместимости
    - Добавлена поддержка файлов с любым размером оверлея (установщики и подобные)
    - Оптимизация части кода для работы с GUI
    - Неиспользуемые в исследуемом файле вкладки не отображаются
    - Добавлена поддержка HighDPI


    HighDPI пока доступен в режиме System, т.е. без поддержки смены DPI во время работы программы.

    Сайт программы # Скачать новую версию
     
  5. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.368
    Обновление программы до версии 0.1.5 (2019-11-09):
    - Добавлен разбор директории IMAGE_DIRECTORY_ENTRY_IAT
    - Добавлено описание символов в таблице Dynamic Value Relocations
    - Добавлено описание к некоторым данным в таблице Volatile Metadata для x86
    - Небольшая оптимизация кода для перехода к новому GUI
    - Исправлены ошибки разбора FuncInfo4 (ExceptionsData table), если размещение некоторых блоков данных было оптимизировано
    - Исправлена ошибка разбора FuncInfo4 (ExceptionsData table) для Separated code segments
    - Добавлен вывод RVA инструкций, соответствующих кодам раскрутки в таблице для x64


    Описание символов в DynValue Relocs - указываются начало и конец таблиц PTE, PDE, PPE, PXE (он же PML4) и PFN_DATABASE, если таковые присутствуют в DynValue Relocs.

    Ошибки разбора FuncInfo4 связаны с обработкой записей с флагом Chain, для таких записей в новой форме FuncInfo не учитывалось наличие таблиц состояний более чем для одного адреса начала функции.

    Сайт программы # Скачать новую версию