Сейчас на форуме: -Sanchez-, morgot, sashalogout (+3 невидимых) |
eXeL@B —› Софт, инструменты —› PEAnatomist - внутренности PE-файлов |
<< . 1 . 2 . 3 . 4 . 5 . 6 . >> |
Посл.ответ | Сообщение |
|
Создано: 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% в зависимости от ряда условий) ничего не пишет, не отправляет. Ознакомиться подробнее с возможностями программы и скачать её можно на | Сообщение посчитали полезным: 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 |
|
Создано: 23 ноября 2019 02:20 · Личное сообщение · #2 Jupiter пишет: RamMerlabs Хотелки: поиск указателей begin&end в DIRECTORY_ENTRY_EXCEPTION, как правило их дохрена, скролить таблу это гемор. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. | Сообщение посчитали полезным: mak |
|
Создано: 23 ноября 2019 10:25 · Личное сообщение · #3 |
|
Создано: 23 ноября 2019 11:58 · Личное сообщение · #4 Jupiter Ок, с отключаемым префиксом что-нибудь придумаю. Bronco Поиск уже заказывали чуть ранее, постараюсь поскорее его сделать. Временно могу предложить воспользоваться переходом к строке по вводимым символам из содержимого первого столбца (как в любом listview). Только не забывайте о префиксе 0x. Vnv Есть такое, спасибо за образец. |
|
Создано: 23 ноября 2019 16:03 · Личное сообщение · #5 Еще было бы неплохо сделать PE Verifier который бы проверял те же вещи что и штатный лоадер винды. Например, что релоки выровнены на границу слова. Что если в хедере есть флаг Image integrity то вводятся дополнительные проверки и т. д. ----- старый пень | Сообщение посчитали полезным: morgot |
|
Создано: 23 ноября 2019 17:01 · Личное сообщение · #6 |
|
Создано: 23 ноября 2019 19:30 · Личное сообщение · #7 |
|
Создано: 23 ноября 2019 20:30 · Личное сообщение · #8 |
|
Создано: 23 ноября 2019 20:51 · Поправил: RamMerlabs · Личное сообщение · #9 Bronco Самый стандартный способ быстрого перехода к строке в listview (по крайней мере из состава comctl, как у всяких фреймворков - я хз) - фокус ввода в Listview и набирать (в соответствующей раскладке само собой) то, что нужно найти. Набирать быстро - чтоб между нажатиями не больше секунды (приблизительно) было. На всякий случай записал демонстрацию - dropmefiles.com/3LPaY (там набирается текст 0x2ff и переходим к первой встретившейся строке с таким началом) Реагирует на инфу из первого столбца. Ну или может мы недопоняли друг друга. Сейв вкладки был с самого начала, потом попросили сделать опциональным. Если мешает - настройки к Вашим услугам Если есть польза - значит фича, если нет - значит отключаемая фича |
|
Создано: 06 декабря 2019 00:48 · Поправил: RamMerlabs · Личное сообщение · #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 |
|
Создано: 07 декабря 2019 17:25 · Поправил: Prince[ART] · Личное сообщение · #11 |
|
Создано: 07 декабря 2019 18:42 · Личное сообщение · #12 |
|
Создано: 12 декабря 2019 17:13 · Поправил: Isaev · Личное сообщение · #13 |
|
Создано: 12 декабря 2019 18:14 · Личное сообщение · #14 |
|
Создано: 12 декабря 2019 18:31 · Личное сообщение · #15 |
|
Создано: 12 декабря 2019 20:05 · Личное сообщение · #16 |
|
Создано: 13 декабря 2019 17:27 · Личное сообщение · #17 |
|
Создано: 13 декабря 2019 18:37 · Личное сообщение · #18 mak Чтобы написать пару плагинов и забыть? Наверное нет. Я даже пока не могу представить, какой API может предоставить программа. Это всё таки пока что не какая-нибудь гидра | Сообщение посчитали полезным: SReg, DimitarSerg |
|
Создано: 13 декабря 2019 19:01 · Личное сообщение · #19 RamMerlabs пишет: mak Чтобы написать пару плагинов и забыть? Наверное нет. Я даже пока не могу представить, какой API может предоставить программа. Это всё таки пока что не какая-нибудь гидра PPEE(puppy) 1.12 - имеет систему плагинов, хотя там всего 2 плагина) ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 19 декабря 2019 07:14 · Личное сообщение · #20 |
|
Создано: 20 декабря 2019 19:04 · Поправил: RamMerlabs · Личное сообщение · #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 |
|
Создано: 21 декабря 2019 18:07 · Поправил: RamMerlabs · Личное сообщение · #22 >>описание некоторых coff-groups из POGO-debug информации Хочу ещё попросить: если у кого-нибудь есть сведения о неизвестных моей проге названиях coff-groups (по сути это названия секций из OBJ-файлов до сборки их компоновщиком) и их назначении (некоторые названия уникальны для определённых случаев) - напишите мне о них, пожалуйста. Эта информация пригодится при реализации ещё одной интересной фичи в недалёком будущем. |
|
Создано: 21 декабря 2019 20:30 · Поправил: GPcH · Личное сообщение · #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 гуида. 218d_21.12.2019_EXELAB.rU.tgz - test.png ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! | Сообщение посчитали полезным: RamMerlabs |
|
Создано: 21 декабря 2019 22:49 · Личное сообщение · #24 GPcH Спасибо, что оценили! Процедуры ещё не все отображаются: нет перечисления контролов и их событий, но их добавлю. Детект состояния "компиленый/интерпретируемый" наиболее вероятно будет в журнале загрузки. Иначе получается исключительная ситуация - программа в общем случае не предназначена конкретно для детекта, как тот же DiE, и какого-то отдельного места (где можно было бы показать аналогичную информацию и для не-VB приложений) для отображения вышеуказанной информации про VB попросту нет. Целью, которую я преследовал показывая эти структуры VB, является желание охватить как можно больше участков в образе, для которых можно показать хоть какое-то вменяемое описание. В идеале - ткнуть любой оффсет/RVA и получить ответ на вопрос "что здесь находится?". Эдакая "анатомия" PE GUID'ы отображаются как есть, ведь VBшная таблица импорта может содержать несколько типов этого самого импорта, моя программа пока распознаёт 3 типа: с именами библиотеки/функции, с GUID'ом компонента (чаще всего {FCFB3D23-A0FA-1068-A738-08002B3371B5} - кажется это сама msvbvm60.dll) и GUID компонента/GUID интерфейса. Другие типы мне не попадались ещё. По мере накопления данных из других структур этот раздел будет чуть более информативным. И ещё раз спасибо Вам за тестирование! |
|
Создано: 21 декабря 2019 23:00 · Личное сообщение · #25 |
|
Создано: 22 декабря 2019 02:52 · Личное сообщение · #26 I registered to this forum just to send feedback to the developer of 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:
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. |
|
Создано: 22 декабря 2019 05:05 · Личное сообщение · #27 |
|
Создано: 22 декабря 2019 08:28 · Личное сообщение · #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 |
|
Создано: 22 декабря 2019 11:42 · Поправил: anony-mouse · Личное сообщение · #29 RamMerlabs пишет: Для интереса сделал функцию построения CFG bitmap образа из GFID и её отображение Красиво! Пожелание (не помню, предлагали уже или нет): Иметь все время под рукой hex view, и чтоб каждая строка показывала соответствующие байты в файлы. У PE Bear это классно получается (см. гифку, и полоска справа тоже удобная). Еще там есть такая удобная визуализация хедеров, на диске и виртуально: c58f_22.12.2019_EXELAB.rU.tgz - 2019-12-22_10-39-31.gif |
|
Создано: 22 декабря 2019 12:19 · Личное сообщение · #30 |
|
Создано: 22 декабря 2019 12:31 · Поправил: RamMerlabs · Личное сообщение · #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 . 5 . 6 . >> |
eXeL@B —› Софт, инструменты —› PEAnatomist - внутренности PE-файлов |