Сейчас на форуме: -Sanchez-, morgot, sashalogout (+3 невидимых)

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

Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

Создано: 11 октября 2019 19:56 · Поправил: RamMerlabs
· Личное сообщение · #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.16 (2020-06-26): Скачать

| Сообщение посчитали полезным: 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, Bad_guy, WELL, igorcauret, =TS=, dimon3d, anony-mouse, Artem_N, Jim DiGriz, Alchemistry


Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

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

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




Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

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

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

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

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

-----
http://ntinfo.biz




Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

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

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




Ранг: 55.9 (постоянный), 29thx
Активность: 0.120.22
Статус: Участник

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

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



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

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

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



Ранг: 15.7 (новичок), 12thx
Активность: 0.050.07
Статус: Участник

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

RamMerlabs

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




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

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

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

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 69.9 (постоянный), 82thx
Активность: 0.140.73
Статус: Участник

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

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



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

Создано: 13 октября 2019 00:27 · Поправил: RamMerlabs
· Личное сообщение · #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


Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

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

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

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

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 128.8 (ветеран), 21thx
Активность: 0.060.05
Статус: Участник

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

RamMerlabs

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

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


Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

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

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

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



Ранг: 128.8 (ветеран), 21thx
Активность: 0.060.05
Статус: Участник

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

BlackCode

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



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

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

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

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




Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

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

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



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

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

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



Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

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

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



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

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

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



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

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

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



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

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

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

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


Ранг: 74.4 (постоянный), 76thx
Активность: 0.050.1
Статус: Участник

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

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

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




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

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

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

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

-----
EnJoy!


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

Ранг: 128.8 (ветеран), 21thx
Активность: 0.060.05
Статус: Участник

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

RamMerlabs

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



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

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

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

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



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

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

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

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



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

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

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

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

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

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

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

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



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

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

здравствуйте. если честно - информативность хорошая, интерфейс - крафне неудачный. я б посоветовал как в cff explorer - была бы вообще конфетка


. 1 . 2 . 3 . 4 . 5 . 6 . >>
 eXeL@B —› Софт, инструменты —› PEAnatomist - внутренности PE-файлов
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати