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

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

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

  1. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.829
    TrashGen,

    Трешик наверно плохого не посоветует ?
    GPE, типо 86 кайт(KITE) - я думал что двиг годный, покуда сам не понял(те при решении задачи тупик со своим же мотором в элементарном применении, из за сложности структур; прошло много времени и я не помню основные детали в его механизмах) как его заюзать спустя время.

    RamMerLabs,

    А смысл в том, что если разобрал формат, то и опиши его код(который обнаружен, покрыт" в процессе разбора пе), иначе зачем эти все пе-редакторы/вьюверы. Их можно за вечер написать, вот только зачем. Любой нормальный диз или отладчик всю инфу показывает. А тем людям, которые хотят жатием кнопок обойти реверс это тоже ничем не поможет.
     
  2. cryptx86

    cryptx86 New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2019
    Сообщения:
    5
    В вашей тулзе записи из rich header отображаются в обратном порядке.
    Можете поделиться списком @comp.id? У вас он вроде бы полнее, чем этот? -> https://gist.github.com/skochinsky/07c8e95e33d9429d81a75622b5d24c8b
     
  3. Intro

    Intro Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    165
    RamMerLabs, а на чём написана ваше приложение?
    Я тут пишу схожую программку. Проводит слияние двух исполняемых файлов, методом копирования кода из файла источника в целевой файл, при этот корректирует адреса релокаций, добавляются секций из источника в целевой файл. Написана на ассемблере, сейчас переписал на С++(с помощью IDAPro и hexrays), работает, но получилось кривовато. И ещё, решил доработать утилитку, чтобы информацию по экспорту и импорту извлекалась, объединялась и копировалась в целевой файл. Это я к тому что просто ещё С++ не освоил до уровня, ну и чтобы не изобретать велосипед.
     
    Последнее редактирование: 14 янв 2020
    _edge нравится это.
  4. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.390
    Обновление программы до версии 0.1.12 (2020-02-13):
    [#] Исправлена ошибка интеграции в контекстное меню оболочки
    [#] Исправлено поведение программы во время загрузки нового файла при наличии открытых окон свойств ресурсов
    [#] Исправлена ошибка отображения описания некоторых символов в таблице Dyn.Value Relocations
    [#] Исправлена ошибка разбора таблицы ExceptionsData для ARM Thumb: некорректная информация о сохраняемых регистрах в сжатой форме UnwindInfo
    [+] Натуральная сортировка добавлена для ещё нескольких списков
    [#] Исправлена ошибка наполнения списка Catch Handlers для UnwindInfo.EHData.CPP_EH4
    [#] Устранена ошибка, приводящая к медленному выполнению операции "Выделить всё" на больших списках
    [+] Часть списков с большим количеством строк переведены на виртуальный режим
    [+] Добавлен переход по связанным элементам UNWIND_INFO списка ExceptionData для x64


    Список ExceptionsData теперь переведён на виртуальный режим, что значительно ускорило отображение на большом количестве элементов. Ожидание на таблице в полмиллиона строк - порядка 0.3 секунды.

    Сайт программы
     
    Последнее редактирование модератором: 8 июл 2020
    asmlamo и UbIvItS нравится это.
  5. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.390
    Обновление программы до версии 0.1.13 (2020-04-25):
    [#] Исправлена ошибка сортировки некоторых списков с signed-long данными
    [#] Исправлена ошибка отображения таблицы ExceptionsData при наличии некорректных данных
    [#] Исправлена ошибка отображения имени секции в описании RVA в некоторых случаях
    [+] Добавлены новые строки описания групп секций на странице "POGO" в IMAGE_DEBUG_DIRECTORY
    [#] Оптимизация и рефакторинг значительной части кода
    [+] Добавлены новые поля в LOAD_CONFIG_DIRECTORY из SDK 19041 - GuardEHContinuations, и недокументированные - eXtended CFG (xFG)
    [+] Добавлена страница со списком GuardEHContinuations
    [+] Добавлены новые флаги характеристик в списке GFID
    [#] Исправлена ошибка с некорректным окончанием строки при копировании в буфер обмена
    [#] Исправлена ошибка разбора таблицы COFF-символов, если указан некорректный адрес
    [-] Иконка главного окна программы больше не изменяется на иконку загружаемого файла
    [#] Исправлена ошибка разбора таблицы связанного импорта
    [+] Добавлена поддержка форматов OBJ-файлов и LIB-файлов
    [+] Добавлена поддержка non-COFF OBJ-файлов
    [+] Добавлен разбор таблицы символов OBJ-файлов
    [+] Добавлен вывод сводной информации о библиотеках импорта в LIB-файлах
    [+] Добавлен разбор таблицы секций и релокаций OBJ-файлов
    [+] Увеличено число расширений файлов для интеграции в контекстное меню проводника
    [#] Исправлена ошибка интеграции в контекстное меню оболочки в случае, если расширение файла не было ранее зарегистрировано в системе


    Сайт программы
     
    Последнее редактирование модератором: 8 июл 2020
    extravert нравится это.
  6. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.390
    Обновление программы до версии 0.1.14 (2020-04-28):
    [#] Исправлена ошибка, приводящая к краху программы при просмотре файлового заголовка PE-файлов, собранных в Borland Delphi
    [#] Небольшая оптимизация внутренних структур данных
    [+] Добавлена возможность извлечения записей из LIB-файлов
    [+] Добавлено меню закрытия файла


    Сайт программы
     
    Последнее редактирование модератором: 8 июл 2020
  7. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.390
    Обновление программы до версии 0.1.15 (2020-05-30):
    [#] Исправлена ошибка определения минорной версии VS 2017-2019 при декодировании сигнатуры Rich (регресс 0.1.13 и 0.1.14)
    [#] Исправлена ошибка декодирования ресурсов RT_STRING при наличии некорректных данных
    [+] Добавлена вкладка с подробным описанием заголовков ресурсов PE
    [#] Вкладка ресурсов переделана на список без группировки по типу ресурсов
    [#] Исправлена сортировка списка ресурсов
    [#] Изменена процедура парсинга директории ресурсов, добавлены новые критерии корректности данных
    [#] Исправлена ошибка работы с файлом настроек при первом запуске программы
    [#] Исправлено поведение парсера COFF-символов при наличии некорректных данных о длинных именах символов
    [#] Исправлена ошибка построения контекстного меню для listview в виртуальном режиме
    [#] Исправлено сохранение выбранного фильтра по типу файлов в диалоге "Открыть файл"
    [#] Исправлено некорректное распознавание UTF16 строк в редких случаях
    [+] Добавлена страница обнаруженных ANSI и UTF16 строк в PE-файле
    [+] Добавлен парсинг CodeView для OBJ-файлов
    [+] Добавлен парсинг символов CodeView для OBJ-файлов
    [+] Добавлен парсинг типов CodeView для OBJ-файлов
    [+] Добавлен разбор новых записей символов CodeView до S_REGREL32_INDIR_ENCTMP включительно
    [+] Добавлен разбор новых записей типов CodeView до LF_INTERFACE2 включительно
    [+] Добавлен разбор информации о типах в OBJ-файлах, скомпилированных MSVC с флагом /GL или иных в формате MS ILStore


    Декодирование CodeView доступно пока только для OBJ-файлов, PDB на подходе к следующей версии вероятно. Обрабатываются символы и типы, остальные данные будут вместе с PDB. Свежие записи символов и типов имеются вплоть до свеженьких из VS16.6 (S_REGREL32_INDIR_ENCTMP - 0x117B и LF_INTERFACE2 - 0x160B соответственно). Для выбранных записей доступно описание всех полей структур этих записей, но пока некоторые записи выглядят достаточно топорно (LF_FIELDLIST). Надеюсь, что скоро прикручу более человеко-понятное описание, возможно в том числе и с декодированием в сишный\масмовый синтаксис.
    Кроме этого, декодируются типы из OBJ-файлов, скомпиленных MSVC с /GL флагом, т.е. результатом работы фронтенда компилятора в виде CIL (C Immediate Language, не Common IL из дотнета!), оформленном в ILStore-формат.

    Хочу ещё попросить помощи с информацией об устройстве этого самого формата ILStore. Кое-чего уже надекодировал, но в целом картины не представляю. Возможно есть что-нибудь почитать по этой теме (C Immediate Language, ILStore)?

    Сайт программы
     
    Последнее редактирование модератором: 8 июл 2020
    Aiks и Cytrus нравится это.
  8. RamMerLabs

    RamMerLabs Active Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.390
    Обновление программы до версии 0.1.16 (2020-06-26):
    [#] Небольшая оптимизация
    [#] Исправлена ошибка определения названия регистра в описании символов CodeView в очень редких случаях
    [+] Добавлена возможность копирования в буфер обмена отдельных столбцов целиком при множественном выборе строк
    [+] Добавлены настройки отображения панели FLC и панели состояния
    [#] Исправлена ошибка масштабирования размера ячеек панели состояния
    [+] В большинство вкладок добавлены элементы управления для изменения пропорций размеров списков (сплиттеры)
    [+] Добавлено определение принимающей DLL в таблицах импорта для библиотек ApiSet
    [+] Добавлен выбор внешней DLL для определения хоста ApiSet в настройках программы
    [+] Добавлен частичный поиск по таблице ExceptionsData (экспериментальная функция)


    Добавил поиск в ExceptionsData, но пока лишь экспериментально: только по некоторым столбцам, про полнотекстовый поиск пока речи нет. Хотелось бы услышать замечания и предложения (без оффтопа) по этой функции, чтобы оценить как лучше её реализовать к грядущей 0.2 версии программы.

    Ещё появился резолв хоста ApiSet-переходников (api-ms-xxxxx.dll и ext-ms-xxxxx.dll), в настройках программы добавилась опция для выбора источника данных - система (из PEB своего процесса) или внешняя DLL ApiSetSchema для резолва на "неродных" исследуемому образу системах.

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

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    41
    RamMerLabs, Можете добавить в свою программу такую функциональность что она показывала по какому файловому смещению находится тот или иной параметр,например ImageBase