Русский / Russian English / Английский

Сейчас на форуме: Sadgenius (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Софт, инструменты —› PEAnatomist - внутренности PE-файлов
<< . 1 . 2 . 3 . 4 . >>
Посл.ответ Сообщение

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 11 октября 2019 19:56 · Поправил: RamMerlabs New!
Цитата · Личное сообщение · #1

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



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


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


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

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

Ознакомиться подробнее с возможностями программы и скачать её можно на сайте программы
Новая версия 0.1.10 (2020-01-10): Скачать

Надеюсь, кому-нибудь ещё программа окажется полезной.

| Сообщение посчитали полезным: mak, Adler, Qbik, Hugo Chaves, HandMill, plutos, MarcElBichon, hors, Bronco, morgot, v00doo, BlackCode, GPcH, DICI BF, ==DJ==[ZLO], CyberGod, TRPD, crypto, DenCoder, UniSoft, exZet, dosprog, -=AkaBOSS=-, SReg, Orlyonok, icerix, topmo3, Jupiter, r_e, Jaa, stnt, ELF_7719116



Ранг: 275.7 (наставник)
Статус: Участник
Advisor

Создано: 23 ноября 2019 02:20 New!
Цитата · Личное сообщение · #2

Jupiter пишет:
RamMerlabs
Хотелки:

поиск указателей begin&end в DIRECTORY_ENTRY_EXCEPTION, как правило их дохрена, скролить таблу это гемор.

| Сообщение посчитали полезным: mak


Ранг: 88.3 (постоянный)
Статус: Участник

Создано: 23 ноября 2019 10:25 New!
Цитата · Личное сообщение · #3

Файл после распаковки Execryptor-а на вкладке "Безопасность" дает висяк, семпл ушел в ЛС.

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 23 ноября 2019 11:58 New!
Цитата · Личное сообщение · #4

Jupiter
Ок, с отключаемым префиксом что-нибудь придумаю.

Bronco
Поиск уже заказывали чуть ранее, постараюсь поскорее его сделать. Временно могу предложить воспользоваться переходом к строке по вводимым символам из содержимого первого столбца (как в любом listview). Только не забывайте о префиксе 0x.

Vnv
Есть такое, спасибо за образец.

Ранг: 581.4 (!)
Статус: Модератор

Создано: 23 ноября 2019 16:03 New!
Цитата · Личное сообщение · #5

Еще было бы неплохо сделать PE Verifier который бы проверял те же вещи что и штатный лоадер винды.
Например, что релоки выровнены на границу слова. Что если в хедере есть флаг Image integrity то вводятся дополнительные проверки и т. д.

| Сообщение посчитали полезным: morgot


Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 23 ноября 2019 17:01 New!
Цитата · Личное сообщение · #6

r_e
Уже пишется Пока не определился с формой вывода информации, но протокол загрузки с ошибками и предупреждениями будет. Коллекция различных проверок пополняется изо дня в день. Скорее всего появится вместе с переделанным GUI.


Ранг: 275.7 (наставник)
Статус: Участник
Advisor

Создано: 23 ноября 2019 19:30 New!
Цитата · Личное сообщение · #7

RamMerlabs пишет:
могу предложить воспользоваться переходом к строке

это как? в контекстном меню только 2 клика.
сейв активной вкладки это баг или фича?

Ранг: 46.5 (посетитель)
Статус: Участник

Создано: 23 ноября 2019 20:30 New!
Цитата · Личное сообщение · #8

Bronco пишет:
сейв активной вкладки это баг или фича?

Очевидно, что фича:

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 23 ноября 2019 20:51 · Поправил: RamMerlabs New!
Цитата · Личное сообщение · #9

Bronco
Самый стандартный способ быстрого перехода к строке в listview (по крайней мере из состава comctl, как у всяких фреймворков - я хз) - фокус ввода в Listview и набирать (в соответствующей раскладке само собой) то, что нужно найти. Набирать быстро - чтоб между нажатиями не больше секунды (приблизительно) было. На всякий случай записал демонстрацию - dropmefiles.com/3LPaY (там набирается текст 0x2ff и переходим к первой встретившейся строке с таким началом)
Реагирует на инфу из первого столбца. Ну или может мы недопоняли друг друга.

Сейв вкладки был с самого начала, потом попросили сделать опциональным. Если мешает - настройки к Вашим услугам Если есть польза - значит фича, если нет - значит отключаемая фича

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 6 декабря 2019 00:48 New!
Цитата · Личное сообщение · #10

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


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

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

| Сообщение посчитали полезным: Orlyonok, Bronco, Vnv, Jupiter, SReg, anony-mouse, mak, Dr_Braun, plutos, DICI BF, sadk0w, Isaev


Ранг: 16.2 (новичок)
Статус: Участник

Создано: 7 декабря 2019 17:25 · Поправил: Prince[ART] New!
Цитата · Личное сообщение · #11

сделай экспорт всего списка импорта/экспорта (из IAT) - ну что за бред копировать по одной API (кстати, не в одно подобной программе такого функционала нет.)

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 7 декабря 2019 18:42 New!
Цитата · Личное сообщение · #12

Prince[ART]
Множественный выбор уже заказывали страницей ранее, будет. Экспорт содержимого списков в файл тоже рассматривается.


Ранг: 755.7 (! !)
Статус: Участник
Student

Создано: 12 декабря 2019 17:13 · Поправил: Isaev New!
Цитата · Личное сообщение · #13

RamMerlabs в ресурсах вкладку для графики, как в текстовых для текста, было бы не лишним
и возможность добавлять другие расширения в assotiations

А так удобненько компактно и работает шустро, спасибо!

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 12 декабря 2019 18:14 New!
Цитата · Личное сообщение · #14

Isaev
Со временем всё будет: меню, диалоги, акселераторы - текстом; графика (простая и поддающаяся декодированию средствами GDI+) - сразу картинкой.
Насчёт кастомных расширений в списке ассоциаций подумаю, в todo записал.

И Вам спасибо за отклик!


Ранг: 755.7 (! !)
Статус: Участник
Student

Создано: 12 декабря 2019 18:31 New!
Цитата · Личное сообщение · #15

RamMerlabs пишет:
Насчёт кастомных расширений в списке ассоциаций подумаю, в todo записал.

это я к тому, что например *.bpl от Delphi прекрасно открывается и в других ЯП наверняка тоже есть свои расширения

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 12 декабря 2019 20:05 New!
Цитата · Личное сообщение · #16

Isaev
Я тоже именно этот случай и подразумеваю. Просто пока внутреннее устройство моей программки не имеет возможностей для изменения списка расширений извне, при случае прикину как это внедрить.


Ранг: 664.6 (! !)
Статус: Участник
CyberMonk

Создано: 13 декабря 2019 17:27 New!
Цитата · Личное сообщение · #17

Может быть будет удобно добавить систему плагинов?!

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 13 декабря 2019 18:37 New!
Цитата · Личное сообщение · #18

mak
Чтобы написать пару плагинов и забыть? Наверное нет. Я даже пока не могу представить, какой API может предоставить программа. Это всё таки пока что не какая-нибудь гидра

| Сообщение посчитали полезным: SReg, DimitarSerg



Ранг: 664.6 (! !)
Статус: Участник
CyberMonk

Создано: 13 декабря 2019 19:01 New!
Цитата · Личное сообщение · #19

RamMerlabs пишет:
mak
Чтобы написать пару плагинов и забыть? Наверное нет. Я даже пока не могу представить, какой API может предоставить программа. Это всё таки пока что не какая-нибудь гидра


PPEE(puppy) 1.12 - имеет систему плагинов, хотя там всего 2 плагина)


Ранг: 275.7 (наставник)
Статус: Участник
Advisor

Создано: 19 декабря 2019 07:14 New!
Цитата · Личное сообщение · #20

mak пишет:
хотя там всего 2 плагина)

угу...положи рядом msvcp100.dll, будет 3, а можно и 4, если ещё подкинуть msvcr100.dll...
хотя хз може это не предел...

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 20 декабря 2019 19:04 New!
Цитата · Личное сообщение · #21

Обновление программы до версии 0.1.8 (2019-12-20):
- Добавлено описание для COFF Groups в таблице отладочной информации
- Обновление интерфейса главного окна программы с использованием древовидного списка доступной информации
- Добавлены новые страницы информации о заголовках: отдельные DOS_HEADER, FILE_HEADER, OPTIONAL_HEADER, CHPE_HEADER, VOLATILE_METADATA_HEADER и некоторых других
- Добавлен разбор таблицы IAT в CHPE для эмулируемой архитектуры
- Добавлено построение битовой карты CFG и её отображение в HEX-виде
- Добавлен разбор некоторых специфичных таблиц для приложений, созданных в VisualBasic 5/6
- Добавлен журнал загрузки файла с отображением предупреждений о несоответствии формату PE (перечень проверок будет расширяться)
- Реализован множественный выбор строк в списках


Новая, немного экспериментальная версия. Прежде всего, заметно изменился внешний вид главного окна программы. Это ещё не конечный результат, следующие версии скорее всего покажут ещё больше модификаций GUI. Будут затронуты как layout окна в целом, так и поведение некоторых уже имеющихся элементов управления (статус-бар в частности). Некоторое поведение будет настраиваемым.
Наконец-то дошла очередь до запрашиваемой многими функции множественного выбора в списках. Обращаю внимание, что копирование в буфер обмена огромных списков целиком (сотни тысяч строк) может не выполниться - это временное явление, копируйте частями по 70-80 тысяч строк.
Кроме того, добавил ооочень сырую (прям пре-альфа альфы) версию журнала загрузки PE - пока он прикручен в виде отдельного списка и реагирует на совсем небольшое число отклонений от формата. В будущем планируется сделать его более контестно-зависимым и добавить около сотни различных проверок.
Для интереса сделал функцию построения CFG bitmap образа из GFID и её отображение. Вот такие штуки теперь можно увидеть (это специально подготовленный пример, в привычных приложениях такого не встретить):


Ну и напоследок ещё чуть-чуть безделушек: описание некоторых coff-groups из POGO-debug информации:


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

| Сообщение посчитали полезным: Adler, Orlyonok, Hugo Chaves, Gideon Vi, SReg, GPcH, ELF_7719116


Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 21 декабря 2019 18:07 · Поправил: RamMerlabs New!
Цитата · Личное сообщение · #22

>>описание некоторых coff-groups из POGO-debug информации
Хочу ещё попросить: если у кого-нибудь есть сведения о неизвестных моей проге названиях coff-groups (по сути это названия секций из OBJ-файлов до сборки их компоновщиком) и их назначении (некоторые названия уникальны для определённых случаев) - напишите мне о них, пожалуйста.
Эта информация пригодится при реализации ещё одной интересной фичи в недалёком будущем.


Ранг: 631.1 (!)
Статус: Участник
Автор VB Decompiler

Создано: 21 декабря 2019 20:30 · Поправил: GPcH New!
Цитата · Личное сообщение · #23

RamMerlabs
Большую работу провел, подход радует!
Я проверил на десятке файлов с 100500 форм и объектов, размерами под 300 мегабайт как P-Code так и Native. Вроде ни на чем не упало. Корректность определения числа процедур у каждого объекта - не проверял. Правда, честности ради, основная польза для неискушенного VB5/6 внутренностями человека - в детекте "P-Code" или "Native" и его куда нибудь лучше жирным шрифтом. Все остальное без декомпиляции (да даже дизассемблинга) выдавать пользователю - только время тратить. Но это имхо, так как и сам для .NET еще более глубокие выкладки всех таблиц и их содержимого делал в VB Decompiler - интересно кто-то в опциях включает показ этих таблиц?

Я считаю каждый инструмент для своей задачи. Такой инструмент как PEAnatomist хорош именно чтобы быстро посмотреть какие-то вещи о файле и оценить что с ним делать. Ну и для удобного анализа импорта, релоков и т.д.

UPD: Раздел "Таблица импорта" в VB5/6 часто содержит GUID'ы. Где-то 1-2, где-то пачками. На скрине файл в 100500 мегабайт, потому там так наглядно (выложить не могу, nda). Но почти в каждом сэмле встречалось в этом разделе 1-2 гуида.

{ Атач доступен только для участников форума } - test.png

| Сообщение посчитали полезным: RamMerlabs


Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 21 декабря 2019 22:49 New!
Цитата · Личное сообщение · #24

GPcH
Спасибо, что оценили!
Процедуры ещё не все отображаются: нет перечисления контролов и их событий, но их добавлю.
Детект состояния "компиленый/интерпретируемый" наиболее вероятно будет в журнале загрузки. Иначе получается исключительная ситуация - программа в общем случае не предназначена конкретно для детекта, как тот же DiE, и какого-то отдельного места (где можно было бы показать аналогичную информацию и для не-VB приложений) для отображения вышеуказанной информации про VB попросту нет.
Целью, которую я преследовал показывая эти структуры VB, является желание охватить как можно больше участков в образе, для которых можно показать хоть какое-то вменяемое описание. В идеале - ткнуть любой оффсет/RVA и получить ответ на вопрос "что здесь находится?". Эдакая "анатомия" PE

GUID'ы отображаются как есть, ведь VBшная таблица импорта может содержать несколько типов этого самого импорта, моя программа пока распознаёт 3 типа: с именами библиотеки/функции, с GUID'ом компонента (чаще всего {FCFB3D23-A0FA-1068-A738-08002B3371B5} - кажется это сама msvbvm60.dll) и GUID компонента/GUID интерфейса. Другие типы мне не попадались ещё. По мере накопления данных из других структур этот раздел будет чуть более информативным.
И ещё раз спасибо Вам за тестирование!


Ранг: 631.1 (!)
Статус: Участник
Автор VB Decompiler

Создано: 21 декабря 2019 23:00 New!
Цитата · Личное сообщение · #25

RamMerlabs
Да не за что! Всегда рад поддержать действительно качественный проект.

Ранг: 0.9 (гость)
Статус: Участник

Создано: 22 декабря 2019 02:52 New!
Цитата · Личное сообщение · #26

I registered to this forum just to send feedback to the developer of PE Anatomist as there is no other way to contact him.

I will address only a single aspect of this well-designed and useful program.

Currently (as of version 0.1.8.234) PE Anatomist saves the configuration file (PEAnatomist.cfg) in AppData:

Code:
  1. C:\Users\User\AppData\Roaming\PEAnatomist.cfg


I would like to suggest an option to use PE Anatomist in portable mode- saving the configuration file in program folder (next to the executable- PEAnatomist.exe) in stead of in AppData. There are many ways this to be implemented, I will suggest 3 simple solutions:

- command-line parameter - if the executable is started with a specific parameter, for example 'PEAnatomist.exe -portable', the configuration file is saved in program folder, not in AppData;
- portable flag - on program start PE Anatomist checks program folder for portable flag (for example- 'portable' (without extension) or 'portable.txt') and if such file exists the configuration file is saved in program folder, not in AppData;
- on program start PE Anatomist checks program folder for the configuration file (PEAnatomist.cfg) and if it exists the configuration file is saved in program folder, not in AppData;

Any way to run PE Anatomist in portable mode- saving configuration file to/loading configuration file from program folder would be fine for me.

Off-topic
I don't find the developers decision not to leave an option to be directly contacted with feedback about his program wise. Not everyone understands Russian (I have some basic understanding) and not everyone would be able to register to forums just to post some feedback. If the developer is so afraid of spam he could have posted contact e-mail at least in program's 'About'. I tried to register to two other forums but it was impossible- unsolvable captchas and moderators' approval is not something I can tolerate, neither do I have time for such abuse. Luckily I finally succeeded in registering here. It also seems that this forum uses non-standard BBCode, I tried to prepare this post using a BBC editor but I encountered some inconsistencies so I discarded the idea of using a BBC editor.

Ранг: 152.5 (ветеран)
Статус: Участник

Создано: 22 декабря 2019 05:05 New!
Цитата · Личное сообщение · #27

smaragdus в чем-то прав, если нужно больше фидбэка, закинь проект на гитхаб, TODO само нарисуется в issues
И соглашусь, подобного рода софт не должен раскидывать конфы по системе, уже как-то сложилось что конфиги рядом лежат.

Ранг: 0.9 (гость)
Статус: Участник

Создано: 22 декабря 2019 08:28 New!
Цитата · Личное сообщение · #28

@VOLKOFF

Please excuse me for responding in English. I understand your post but I cannot express myself well in Russian (I studied Russian years ago in school).

For me an option to use PE Anatomist in portable mode would just make the program more flexible- the user would be able to decide where the configuration file should be saved. A simple advantage of portable mode- the user would be able to use the program from an external drive with its configuration saved. Also I prefer portable programs because they are easier to backup.

Off-topic again- I have just received notification from WASM that my registration was rejected due to forum anti-spam policy. I deleted the message without taking a screen-shot. It seems destiny chose for me to be able to register here only.

Ранг: 1.2 (гость)
Статус: Участник

Создано: 22 декабря 2019 11:42 · Поправил: anony-mouse New!
Цитата · Личное сообщение · #29

RamMerlabs пишет:
Для интереса сделал функцию построения CFG bitmap образа из GFID и её отображение

Красиво!

Пожелание (не помню, предлагали уже или нет):
Иметь все время под рукой hex view, и чтоб каждая строка показывала соответствующие байты в файлы. У PE Bear это классно получается (см. гифку, и полоска справа тоже удобная).


Еще там есть такая удобная визуализация хедеров, на диске и виртуально:


{ Атач доступен только для участников форума } - 2019-12-22_10-39-31.gif

Ранг: 152.5 (ветеран)
Статус: Участник

Создано: 22 декабря 2019 12:19 New!
Цитата · Личное сообщение · #30

Я очень надеюсь что сабж не превратится в такое же уг как педобир...

Ранг: 60.6 (постоянный)
Статус: Участник

Создано: 22 декабря 2019 12:31 · Поправил: RamMerlabs New!
Цитата · Личное сообщение · #31

smaragdus
Thanks for your feedback and sorry for the inconvenience. This is a temporary way for feedback, I will add an e-mail a bit later.
I will try to solve the problem of saving settings for portable mode in the next updates.

VOLKOFF
гитхаб однозначно нет.
С настройками постараюсь к ближайшему обновлению разобраться.
UPD:
>>Я очень надеюсь что сабж не превратится в такое же уг как педобир
не должен по крайней мере я буду стараться.

anony-mouse
Спрашивали уже и не раз, в очередной раз отвечаю - hexview будет.
Графиков не предвидится.
<< . 1 . 2 . 3 . 4 . >>
 eXeL@B —› Софт, инструменты —› PEAnatomist - внутренности PE-файлов

Видеокурс ВЗЛОМ