Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » PEAnatomist

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6

Открыть новую тему     Написать ответ в эту тему

RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PEAnatomist


Бесплатная утилита PEAnatomist поддерживает практически все известные и некоторые недокументированные структуры внутри файлов MS PortableExecutable (EXE, DLL, SYS и подобных), библиотек LIB и объектных файлов в форматах COFF, MSVC CxxIL и ExtendedObj, файлов отладочной информации в форматах DBG и MS PDB, а также выполняет несложный анализ полученных данных.
 
Программа не ограничивается обычным набором из файлового/опционального заголовков, импорта, экспорта, ресурсов и т.д. PEAnatomist глубоко вонзает "скальпель" в таблицы Base Relocations, LoadConfig и ExceptionsData.
Вскрываются все поля и таблицы из LoadConfig - вплоть до версий из свежайших Windows SDK и ещё не документированных. Производится лёгкий анализ содержимого по релоцируемым VA, в т.ч. для специфичных типов релокации архитектур ARM7 Thumb и IA64. И, наконец, полный разбор таблиц ExceptionsData для архитектур x64, ARM7, ARM7 Thumb, ARM64 (в том числе и гибридных CHPE и ARM64EC), IA64 и специфичных для языка данных обработки исключений.
На закуску ещё есть декодирование всех элементов из Rich-подписи с указанием всех используемых при создании PE инструментов, отображение многих типов отладочной информации, заголовков VisualBasic5/6, таблиц метаданных dotNET и нативных сборок (NGEN и Ready2Run).
Кроме PE формата, поддерживаются и объектные файлы COFF, ExtendedObj и MSVC CxxIL (промежуточный язык компилятора MSVC), MS PDB (ProgramDatabase) в формате MSFv7 и DBG (Stripped Debug Information).
Установка программы не требуется, дополнительных зависимостей нет. Права администратора программе не нужны, но без них не получится добавить ассоциации с файлами в проводнике. Программа никуда кроме файла настроек (рядом с программой или в %appdata% в зависимости от ряда условий) ничего не пишет, не отправляет.


 
Домашняя страница :: Список изменений :: Скачать новую версию 0.2.12509.1612 (2024-01-09)

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 19:56 11-10-2019 | Исправлено: RamMerLabs, 21:01 15-01-2024
tmrx

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Превосходно!
Но почему

Цитата:
файла настроек (в %appdata%)

???
Зачем, для чего? Почему не рядом с программой, почему сразу не сделать портабельно?

Всего записей: 206 | Зарегистр. 27-01-2016 | Отправлено: 22:13 17-10-2019
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tmrx
Если программа будет запускаться из read-only директории (ProgramFiles на vista+ с включенным UAC или элементарно с сетевого ресурса с соответствующими ограничениями доступа) ей некуда будет сохранять настройки.
Вобщем-то мне такой вариант самому не совсем нравится, в будущих версиях скорее всего переделаю, чтобы сперва пытаться сохранить/читать из директории программы, а в потом уже из appdata.

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 22:31 17-10-2019 | Исправлено: RamMerLabs, 22:32 17-10-2019
Alex_Qwerty

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно сделать портабельность проще: если в каталоге с экзешником лежит PEAnatomist.cfg (даже пустой/неправильный - проверять минимальную длину для простоты создания), то использовать его. Если не получается записать, то это проблема юзера (показать сообщение).

Всего записей: 2286 | Зарегистр. 09-09-2006 | Отправлено: 12:05 18-10-2019
RamMerLabs

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

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

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 20:41 18-10-2019 | Исправлено: RamMerLabs, 18:40 08-07-2020
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обновление программы до версии 0.1.3 (2019-10-19):
-Исправлен баг в разборе таблиц ExceptionsData для x64
 
Из-за чудовищной опечатки (edx вместо eax) некорректно работала функция разбора ExceptionsData для x64 на небольших файлах (на больших файлах значение edx начинало проходить через условие).
Кроме того ещё на ~8% ускорена обработка вышеупомянутой таблицы.

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 23:25 19-10-2019 | Исправлено: RamMerLabs, 18:40 08-07-2020
RamMerLabs

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

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

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 19:08 31-10-2019 | Исправлено: RamMerLabs, 18:41 08-07-2020
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обновление программы до версии 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 не учитывалось наличие таблиц состояний более чем для одного адреса начала функции.

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 01:56 09-11-2019 | Исправлено: RamMerLabs, 18:41 08-07-2020
yura43



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RamMerLabs
Доброго дня!
И все же, рассмотрите возможность  сохранения файла настроек в папке программы.
И еще, возможность опционально очищать список недавних файлов.

Всего записей: 318 | Зарегистр. 01-10-2010 | Отправлено: 08:05 09-11-2019
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yura43
Здравствуйте.
Файл настроек рядом с exe будет, но чуть позже.
Очистку списка недавних файлов сделаю, записал в todo.
Спасибо!

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 14:51 09-11-2019
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обновление программы до версии 0.1.6 (2019-11-23):
- Исправлена ошибка разбора таблицы импорта, модифицированной некоторыми упаковщиками
- Добавлена принудительная очистка списка недавних файлов
- Добавлена реакция на клавишу ENTER в текстовых полях FLC
- Добавлены настройки:  
    - установка окна программы поверх всех;
    - контраста цвета чередующегося фона списков;
    - кол-ва выводимых в HEX-виде байт в описании в таблице Base Relocations;
    - восстановления последней открытой вкладки;
    - вставки шапки списка в копируемые в буфер обмена данные;
    - использования клавиши ESC для выхода из программы
- Исправлено отображение минормной версии инструмента в RICH-подписи для VS2017 и выше
- Устранено некорректное поведение при изменении размеров главного окна
- Исправлена ошибка удаления ассоциации с файлами
- Поля ввода формы FLC очищаются после загрузки нового файла
- Исправлена ошибка отображения таблицы секций, если некоторые поля заголовка были занулены
- Добавлено именование секций по номеру, если их имя не указано в заголовке или не содержит печатных символов
- Полностью переделан механизм работы с секциями и вычисления соответствия RVA смещению в файле
- Устранены ошибки в работе FLC

 
В этой версии алгоритм расчёта RVA->raw и наоборот, а также работы с секциями полностью переписан. Теперь учитываются многие особенности оригинального загрузчика PE из Windows начиная с XP. Тестирование на моих образцах не показало значительных ошибок - всякие хитрые, но валидные PE были загружены и данные из них отображены. Из незначительных ошибок стоит отметить неточность в вычислении raw->RVA из последней секции в особых случаях. Разумеется, программа не может показать данные из "самомодифицирующихся" при загрузке PE, т.е. если из-за действия например релоков, запуска tls-коллбеков или перемещения заголовков последние модифицируются - программа покажет то, что было в файле изначально. Ну и позволю похвастаться - подавляющее большинство аналогичных программ (в том числе и совсем не бесплатные) не смогли корректно обработать и десятую часть от предлагаемых семплов.
Конечно, 100% точности ещё нет, поэтому буду рад любым проблемным образцам.

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 00:55 23-11-2019 | Исправлено: RamMerLabs, 18:42 08-07-2020
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RamMerLabs
Шрифт не автомасштабируется при нестандартных DPI. Так задумано?
 
RC_data (делфи) как диалоги не показывает?

Всего записей: 1319 | Зарегистр. 17-01-2011 | Отправлено: 06:04 23-11-2019 | Исправлено: Jonmey, 06:11 23-11-2019
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey
Должен масштабироваться, причём без участия самой программы, т.к. для диаголовых окон этим занимается сама система. Не могли бы Вы приложить скриншот с проявлением проблемы?
 
Нет, ресурсы delphi пока не разбирает.

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 11:45 23-11-2019
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RamMerLabs
Да, подтверждаю, с масштабированием порядок. В программе текст панелей на шаг меньше, относительно текста меню (так задумано, как понимаю). Поэтому принял эту разницу за отсутствие масштабируемости. Однако, на самом деле масштабируются оба размера, сохраняя эту относительную разницу в один шаг.
 
Ресурсы некорректных (без коррекции импорта) дампов отображаются серым. Просмотреть нельзя. Так задумано? PEExplorer такие, как правило, показывает.

Всего записей: 1319 | Зарегистр. 17-01-2011 | Отправлено: 23:38 23-11-2019
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey
С размером шрифта в диалогах попробую что-нибудь придумать, чтобы не было различий. Спасибо, что обратили внимание.
 
Ресурсы, помеченные как некорректные, таковыми считаются потому, что адрес их содержимого выходит за рамки читаемого образа\файла. Грубо говоря, прочитать данные по смещению 2000 байт из файла размером в 1000 байт никак не получится.  
Разве PEExplorer показывает реальные ресурсы? Обычно он в указанных Вами случаях просто выводит HEX-view с мусором, но никак не что-то имеющее отношение к ресурсам. По крайней мере иного мне видеть не случалось.

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 00:24 24-11-2019
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RamMerLabs
Смотрите ПМ (дамп и его источник). Ср. с PeExplorer.

Всего записей: 1319 | Зарегистр. 17-01-2011 | Отправлено: 01:36 24-11-2019
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jonmey
Спасибо, увидел. Тут получилось так, что оригинальная секция ресурсов (что была до упаковки) оказалась разбита на две части - одна лежит в указанной в заголовках PE секции вместе с заголовками таблицы ресурсов и используется для корректного запуска сжатого exe, а вторая часть была сжата и после дампа оказалась в другой секции. Поскольку моя программа проверяет принадлежность RVA содержимого указанной в заголовках PE секции ресурсов, то вторую часть (что образовалась после дампа) она корректными ресурсами не признала.  
Постараюсь исправить это поведение.

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 12:22 24-11-2019 | Исправлено: RamMerLabs, 12:24 24-11-2019
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обновление программы до версии 0.1.7 (2019-12-06):
- Исправлена ошибка с зависанием при обработке данных подписи PE
- Исправлен мелкий недочёт с отображением подсказки в полях ввода FLC
- Устранены мелкие ошибки работы с LSDA в таблице ExceptionsData
- Исправлено отображение сведений о ресурсах в сдампленных PE
- Оптимизация кода для работы с GUI
- Добавлена настройка назначения элементам управления шрифта, используемого оболочкой (изменение настройки требует перезапуска программы)
- Исправлены мелкие ошибки при отображении диаголов из ресурсов исследуемого файла
- Исправлена ошибка отображения вкладок для директорий PE для некоторых модифицированных образов

 
Это обновление программы преимущественно направлено на исправление некоторых выявленных ошибок; следующая версия обещает быть более щедрой на новые плюшки как по интерфейсу, так и по функционалу. Новый GUI потихоньку пишется, но для публикации ещё не готов.
 
Jonmey
Отображение ресурсов подправил немного, ограничение на размещение тела ресурса в секции .rsrc убрал.

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 00:49 06-12-2019 | Исправлено: RamMerLabs, 18:42 08-07-2020
CdX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RamMerLabs
Крутой PE-просмотрщик! Надеюсь, будет и дальше активно развиваться. Замечание по мелочи: предлагаю пункт "Очистить список недавних файлов" перенести из меню "Вид" либо в меню "Файл", либо (что еще лучше, имхо) - верхним пунктом подменю "Недавние файлы".

----------
Кто ищет - тот всегда найдёт. Даже не зная, что искать, где и как.

Всего записей: 325 | Зарегистр. 22-07-2003 | Отправлено: 11:26 06-12-2019
RamMerLabs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CdX
Спасибо на добром слове!
 
Про пункт меню так сначала и планировалось сделать (верхним пунктом в подменю), но после короткого тестирования оказалось, что очень часто этот пункт нажимается случайно вместо выбора желаемого файла. Пришлось вынести очистку чуть-чуть подальше.

Всего записей: 94 | Зарегистр. 24-02-2007 | Отправлено: 12:15 06-12-2019 | Исправлено: RamMerLabs, 12:16 06-12-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6

Компьютерный форум Ru.Board » Компьютеры » Программы » PEAnatomist


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru