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

ВИДЕОКУРС ВЗЛОМ
выпущен 8 октября!


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

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

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

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

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

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

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



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

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

Ознакомиться подробнее с возможностями программы и скачать её первую версию можно здесь:
https://rammerlabs.alidml.ru/
Надеюсь, кому-нибудь ещё программа окажется полезной.

| Сообщение посчитали полезным: mak, Adler, Qbik, Hugo Chaves, HandMill, plutos, MarcElBichon, hors, Bronco, morgot, v00doo, BlackCode, GPcH, DICI BF, ==DJ==[ZLO], CyberGod, TRPD, crypto, DenCoder, UniSoft, exZet



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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RamMerlabs

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


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

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

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

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

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

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

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

Создано: 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



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

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

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

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

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

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

RamMerlabs

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

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



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

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

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

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

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

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

BlackCode

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

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

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

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

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


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

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

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

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

Создано: 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 неплохо было бы еще иметь текстовое представление ресурса. Дампы и историю загрузок файлов тоже не помешало бы добавить.

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

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

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

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

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

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

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

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

exZet
Спасибо!
Редактирование пока в ооочень далёких планах.
Файл не освобождается до конца работы с ним, т.к. образ проецируется в память, а не читается через ReadFile. Хотелось бы конечно уйти от MapViewOfFile, но придётся переписать процентов 80 кода.
 eXeL@B —› Софт, инструменты —› PEAnatomist 0.1.1 - внутренности PE-файлов

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

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