eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

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

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

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

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

Создано: 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.5 (2019-11-09): Скачать
Надеюсь, кому-нибудь ещё программа окажется полезной.

| Сообщение посчитали полезным: 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



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

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

RamMerlabs пишет:
Например так отображается таблица Exceptions для x64

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

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

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

Bronco
Согласен, с дизайном GUI конечно не всё по феншую, старался вместить сразу побольше данных для быстрого просмотра. А что именно для Вас оказалось неудобным? Сами списки, из размеры или наполнение?
Сейчас в разработке новая версия GUI, планирую сделать с MDI и по умолчанию выделить бОльшее пространство для списков.
Поиск и фильтр впишу в todo.
Локализация структур - это Вы имеете ввиду заголовки списков? Если так, то пока могу предложить переключиться на английский язык. И тогда получается, что во всей проге и "локализовывать" нечего
Спасибо за Ваш комментарий!


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

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

Интересная программа. Много полезной информации, например EXCEPTION_DATA_DIRECTORY и разбор RICH сигнатур.

Есть ряд замечаний по интерфейсу(например сделать более продуманным диалог Options), но в целом всё очень достойно.

Также хочу заметить, что основной функционал полностью написан с использованием компилятора MASM. Что очень круто в 2019 году, хотя и создаёт известные проблемы с переносимостью.

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

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

hors
Спасибо!
Любые замечания, предложения только приветствуются. С настройками что-нибудь придумаю по мере обновления интерфейса.
На самом деле не только основной функционал, а всё до последнего байта (ну кроме ресурсов) вышло из ML

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

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

RamMerlabs, чисто дилетантская "придирка" - если запускать программу "как есть" (не выбирая принудительно запуск от администратора) в ОС со включенным UAC, то не сразу понятно, почему галочки ассоциации не работают.

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

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

Adler
О, точно. Сделаю вывод дополнительного сообщения.
Впрочем, в других местах при возникновении ошибки программа тоже молчит как партизан.
Записал в todo.
Спасибо!

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

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

RamMerlabs

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


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

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

Скорость приятно удивила. Отправил пару сэмплов на которых падает в личку.

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

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

Очень интересная программа, много полезной инфы. Есть 2 вопроса:
1. "настройки адресов" - это релоки?
2. как я понимаю, строки U: - юникод, А: - анси. А с I: что начинается? Просто обозначение элемента таблицы импорта?

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

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

GPcH
Спасибо! Уже разбираюсь.

morgot
Спасибо!
1. Так и есть, Base relocations. Перевод устоявшихся терминов с английского, похоже, неудачный. Если Вам будет удобнее, переключитесь в настройках на английский язык.
2. Верно, I - элемент IAT. Подробное описание скоращений есть на сайте, позволю процитировать здесь:
- импортируемых функций (сокращение "I:")
- адреса переходника импорта ("IT:", Import Thunk)
- отложенно-импортируемых функций ("DI:", Delayed Import)
- адреса переходника отложенного импорта ("DIT:")
- адреса структуры отложенного импорта IMGDELAYDESCR ("DID:", Delayed Import Descriptor)
- экспортируемых функций ("E:")
- адресов из списков и полей из LoadConfig Directory ("SEH Handler", "CFG Check Function", "CFG Dispatch Function", "RFG Failure Routine", "RFG Verify Stack Function", "Security Cookie", "GFIDs Table")
- значение глобального указателя, если это предусмотрено целевой архитектурой PE-файла ("Global Pointer")

A - ANSI строки; U - UTF16, производится поиск символов, соответствующим таковым ANSI (0x00XX), а также символов, соответствующим cp1251 (кириллица). Со временем планирую расширить поиск и другими кодовыми страницами (скорее всего всеми европейскими, азиатские великоваты всё же).

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



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

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

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

сорян, к всё и сразу оказался не готов..+ запустилась на кирилице, и не сразу вкурил где что.
а вот парс таблиц реально впечатлил, особенно таблицы егоров. но хотелось бы чтобы структуры отображались в полях, как у мелких в энумах расписано.

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

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

RamMerlabs

Возможно, что я много хочу и это не относится к данной программе, но можно ли добавить поиск криптосигнатур ?
Спасибо!

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



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

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

Hugo Chaves пишет:
добавить поиск криптосигнатур

Вот это весч нужная.

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

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

BlackCode

В общем утилита очень хорошая и респект автору.
Может и воплотит в жизнь наши хотелки....

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

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

Bronco
но хотелось бы чтобы структуры отображались в полях, как у мелких в энумах расписано
Если Вас не затруднит, напишите на примере каких-нибудь данных из проги как бы Вы хотели это видеть?
Скриншот, исправленный даже в пейнте, был бы вообще шикарен.

Hugo Chaves
Спасибо за отзыв и за идею, рассмотрю, что и где можно прикрутить.
Признаюсь, идей по функционалу много, но в теущих рамках GUI новые возможности уже не вмещаются. Поэтому пока приоритетной задачей стоит переделка интерфейса и увеличение информативности (например, сообщения об ошибках остались за бортом).


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

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

RamMerlabs
По поводу GUI, учитывайте совместимость с High DPI.

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

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

BlackCode
Хорошо. В todo записал. Ещё не приходилось добавлять поддержку HighDPI в своём коде, буду изучать что как устроено.

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

Создано: 14 октября 2019 07:51 · Поправил: crypto New!
Цитата · Личное сообщение · #19

RamMerlabs
Мне понравилось. Можно еще добавить просмотр ресурсов RT_BITMAP, RT_ICON, в RT_DIALOG неплохо было бы еще иметь текстовое представление ресурса. Дампы и историю загрузок файлов тоже не помешало бы добавить.

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

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

crypto
Спасибо!
Хорошо, с ресурсами придумаю что-нибудь. Декодирование в текст диалогов и меню уже в планах есть.
Дампы - Вы имеете ввиду сохранение образа из VM?
Историю загрузок файлов - что-то вроде последних 10 загруженных файлов в меню? В todo записал, сделаю.

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

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

RamMerlabs удобная весч. Только не совсем удобно, что нет редактирования полей, и что файл не освобождается после парсинга(удалить файл или внести изменения не получится пока он открыт)
Дампы - наверно дампы секций, ресурсов, етс.

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

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

exZet
Спасибо!
Редактирование пока в ооочень далёких планах.
Файл не освобождается до конца работы с ним, т.к. образ проецируется в память, а не читается через ReadFile. Хотелось бы конечно уйти от MapViewOfFile, но придётся переписать процентов 80 кода.

| Сообщение посчитали полезным: ==DJ==[ZLO]



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

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

exZet Только не совсем удобно, что нет редактирования полей, и что файл не освобождается после парсинга(удалить файл или внести изменения не получится пока он открыт)
Дампы - наверно дампы секций, ресурсов, етс.

Понабегут разные хемели с "хотелками". Ширше смотрите на инструмент. (to Author - есть пару "вылетов" не стану сейчас отправлять. Протестирую. Соберу в кучу с мЫслями ) Отправлю...


Ранг: 592.1 (!)
Статус: Модератор
Research & Development

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

RamMerlabs пишет:
Файл не освобождается до конца работы с ним, т.к. образ проецируется в память

Так можно же с ним работать в неэксклюзивном режиме, при чём с тем же MapViewOfFile.

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


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

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

RamMerlabs

Ничего лучше,чем MapViewOfFile,нельзя придумать.
Согласен с Jupiter

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

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

==DJ==[ZLO]
Спасибо, высылайте - посмотрим, разберёмся.

Jupiter
Идею понял, буду исправлять.

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

Создано: 15 октября 2019 16:26 · Поправил: exZet New!
Цитата · Личное сообщение · #27

RamMerlabs, таки да, достаточно ведь атрибуты поменять или у MapViewOfFile или у CreateFileMapping. В общем-то последний я себе пропатчил.
Кстати, небольшой баг-репорт: на больших файлах, при переключении на вкладку Исключения тулз подвисает до тех пор, пока сканирование не завершится. Или такой случай - если ранее была выбрана вкладка Исключения, и потом из контекстного меню выбрать большой файл, то окно тулза не появится, опять же, пока сканирование не завершится.

==DJ==[ZLO], упырте мел, уважаемый, и оставьте свое мнение там, где оно было до моего поста.

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

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

exZet
Похоже, что недостаточно. Несмотря на CreateFile (..., FILE_SHARE_READ, ...), последующий CreateFileMapping так просто не даст расшарить ресурс. Заметка на devblogs об этом. Может быть у Вас есть другая информация?

Насчёт баг-репорта - увы, пока только так. Многопоточности ещё нету (будет), поэтому обработка большой таблицы exceptions подвешивает гуй. Небольшая возможность оптимизации процедуры есть, уже в разработке.

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


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

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

RamMerlabs, извините, имелось ввиду на совместную запись, иначе некоторые программы не записовали

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

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

здравствуйте. если честно - информативность хорошая, интерфейс - крафне неудачный. я б посоветовал как в cff explorer - была бы вообще конфетка
. 1 . 2 . >>
 eXeL@B —› Софт, инструменты —› PEAnatomist - внутренности PE-файлов

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS