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

Сейчас на форуме: van9petryk (+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


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

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

"сабж не превратится в такое же уг как педобир"
Все проще, сабж превратится в платный софт как обычно

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

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

Boostyq
Не вижу для этого никаких предпосылок. Даже donate-ware не рассматривается.
А уж чтобы требовать за ПО деньги нужно помимо наличия выдающегося и уникального функционала обеспечить и защиту этого самого функционала, а учитывая аудиторию пользователей, это должна быть как минимум какая-нибудь ВМ с аппаратным ключом и сканером сетчатки.
Так что не переживайте. Но за оценку перспективы спасибо

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

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

@RamMerlabs

>>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.

Thank you for accepting my suggestion. For me it was not a bug inconvenience- at least I discovered an interesting community. Happy holidays!

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

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

RamMerlabs

Уважаемый Автор, добавьте поиск криптосигнатур, пожалуйста.

Я понимаю, что к сабжу это имеет весьма косвенное отношение ...

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

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

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

Чтобы не делать велосипед, можно прикрутить поддержку плагинов от PEiD'a и юзать Kanal


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

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

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


CryptoCheckers

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

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

smaragdus
You are welcome!

Hugo Chaves
Обещать ничего не буду насчёт детекта криптосигнатур. Мне не хотелось бы забивать программу тоннами словарей (плюс ещё и поддерживать их в актуальном состоянии), а в случае с детектом криптосигнатур объём их наверное будет сопоставим с размером всей программы.

TryAga1n
О плагинах разговаривали чуть ранее в этой теме, их не будет.

to All:
Если у кого-то Microsoft Defender детектил прогу - обновите пожалуйста базы дефендера, это ложное срабатывание. Я отправлял им абузу, по состоянию на 19:05 МСК программа больше не детектится.
Аналогично для пользователей Avira (и F-Secure, он базы авиры пользует) - они тоже прислали отчёт, что детект был ложным и скорректировали базы.
По крайней мере на вирустотале эти антитвари больше не ругаются. Авира в обратном письме подтвердила моё предположение, что детектило из-за crypt32.dll и его апишек в импорте - PEAnatomist пока что пользуется ими для декодирования pe authenticode.

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

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

RamMerlabs
Насчет криптосигнатур. Прикрути к проге yara, сигны можно взять тут.
Имхо это самый простой и относительно легко реализуемый метод.

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


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

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

RamMerlabs
Заметил, что некоторые программы (игры) не запускаются на Windows XP, хотя и 32-битные.
Долго не мог понять, в чём причина. Ошибка была типа "Файл не является приложением Win32"

Оказалось, дело в параметре "Major OS version", или "Major Subsystem version" (не разобрался, какой из них, т.к. они обычно имеют одинаковое значение)
В-общем, там было значение 6.0, что соответствует Windows Vista (или выше), поэтому и не запускалось ничего.

К чему это я. Неплохо было бы добавить в вашей программе в описание этих параметров название требуемой версии Windows
Например,
5.1 - Windows XP 32-bit
5.2 - Windows XP 64-bit
6.0 - Windows Vista
и так далее

Список версий Windows
https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions

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

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

lx60
>>не разобрался, какой из них
Это Subsystem Version.
Я намеренно не стал добавлять подобное описание, т.к. привычные значения subsystemversion 5.1, 5.2, 6.0, 6.3 и 10.0 и так известны всем, кто знает об их существовании. Разве что можно добавиь реакцию в журнале загрузки на отличный от привычного номер подсистемы.
Строго говоря, то, что цифры в версии подсистемы такие же как мажорный и минорный номера версии конкретной винды - совпадение. Эти цифры указывают на минимальную версию подсистемы (не версию операционной системы - это параметры Major/Minor OS Version), требуемой для загрузки образа. И, сделав описание на известные номера версий винды, можно это описание просто игнорировать, потому что образ с subsystemversion например 5.99 не соответсвует ни одной из версий винды, но будет валидным и спокойно обработается той же вистой и выше. Для win10 ещё больше вариантов несуществующих версий винды, значение которых будучи записанным в subsystemversion не вызовет нарекания.
И кстати, 5.2 - это не хп64, а server2003. хп64 грубо говоря это та же 2003 с включенными по-умолчанию темами оформления и выключенными сервисами.

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


Ранг: 403.2 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

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

RamMerlabs
Продолжая тему мелких хотелок, есть вариант показывать версии microsoft redistributable, которые нужно скачать для запуска. Помнится для старых пакетов вылазит мсжбокс про неправильную параллельную конфигурацию.

Возможно, есть смысл добавить анализ "мусора" в pe-хидере, который не попадает в mz/pe-структуры. Например, некоторые проты оставляют там номера своих версий, сигнатуры или другие артефакты. Или из других секций что-то ссылается на этот "мусор" в хидере.

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


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

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

ELF_7719116
На версию vc redistr иногда ссылается манифест (при его наличии), запишу себе в todo его разбор. Если смотреть только по импортируемым библиотекам (MSVCR100.dll и т.д.), то большой надежности не получится - имя файла может быть одно и то же, а циферки в версии могут отличаться (номер сборки или после сервиспака). Мне попадались программы, которые были заточены под версию msvcr не ниже определённого билда (то есть с некоторыми исправлениями), с msvcr меньшей версии падали где им вздумается. Но имя DLL оставалось одинаковым.
Насчёт анализов "мусора" я не уверен - вариаций его может быть куча, это опять получится детектор а-ля peid. Можно просто определить его наличие и выводить сырым хексом.

Ранг: 403.2 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

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

RamMerlabs пишет:
Насчёт анализов "мусора" я не уверен - вариаций его может быть куча

Хотя бы сигнализировать о наличии таких артефактов в хидере.
RamMerlabs пишет:
Но имя DLL оставалось одинаковым.

Скорее всего, различие в количестве экспортируемых функций.

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

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

ELF_7719116
>>Хотя бы сигнализировать о наличии таких артефактов в хидере.
Ааа, это будет. Точнее частично уже сейчас есть в журнале загрузки. Проверки на пересечение заголовков, на "дыры" между ними. К следующей версии планирую добавить ещё.

>>Скорее всего, различие в количестве экспортируемых функций.
Не, тогда бы загрузчик сразу рапортовал о том, что "точка входа в процедуру ХХХ не найдена".
В приведённом примере проблема была именно в корявом софте (полу-корпоративная разработка). Но тем не менее, инцидент имел место быть.

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

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

Обновление программы до версии 0.1.9 (2019-12-27):
- Оптимизированы некоторые внутренние форматы данных
- Исправлен способ сохранения настроек, теперь механизм такой:
-- если отсутствуют файлы настроек рядом с программой и в %appdata%, то файл настроек будет создан рядом с программой;
-- если файла настроек нет рядом с программой и директория недоступна для записи, то сохранение произойдёт в %appdata%;
-- если имеется валидный файл настроек рядом с программой - настройки всегда считываются оттуда, сохранение настроек производится, если файл доступен на запись;
-- если файл настроек уже есть в %appdata%, то для чтения/записи настроек всегда используется он.
- Скрываемые уменьшением значения "Number Of RVA And Sizes" директории при их наличии помечаются серым цветом
- Усовешенствована сортировка списков


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

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


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

Создано: 10 января 2020 18:17 New!
Цитата · Личное сообщение · #17

Обновление программы до версии 0.1.10 (2020-01-10):
- Добавлено отображение перенаправления на другую UNWIND_INFO между managed/unmanaged code в таблице ExceptionsData для x64
- Добавлен разбор таблиц и метаданных dotNET


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

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



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

Создано: 10 января 2020 20:46 · Поправил: ==DJ==[ZLO] New!
Цитата · Личное сообщение · #18

Signature исчезла в новой версии. Или Вы её удалили?


Добавлено спустя 1 часов 15 минут
Просьба - если вы делаете changelog употребляйте + и - или +- как говорится прибыло убыло. Или другие символы) Не сочтите за критику ). Удобно мб будет?)

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

Создано: 10 января 2020 21:02 · Поправил: RamMerlabs New!
Цитата · Личное сообщение · #19

==DJ==[ZLO]
Сама структура IMAGE_NT_HEADERS не отображается - из-за одного поля не хотелось выделять отдельный список. А вот значение сигнатуры по соответствующему адресу выводится в дос-заголовке в описании поля 'address of new exe header': "PE".

>>Удобно мб будет?)
Звиняюсь, не сразу заметил добавленную часть сообщения.
Это запросто. В readme, который с программой идёт, так и делаю.
На самом деле список изменений не всегда получается полным - иногда случается так, что одним билдом исправляется/добавляется несколько совсем разных вещей и что-то я забываю описать в комментарии к сборке. Особенно если какой-то код многократно переносится из приватной отладочно-экспериментальной ветки в публичную и между переносами вносятся исправления.

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

Создано: 11 января 2020 05:52 New!
Цитата · Личное сообщение · #20

RamMerlabs

Как насчет добавить возможность изменять размер области дополнительного листвью справа мышью (например см вкладки Import/BaseRelocations)? Сейчас он фиксированного размера, что несколько неудобно. Еще я бы предложил резольвить apiset и показывать его модуль в списке под самим аписетом.

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

Создано: 11 января 2020 15:21 New!
Цитата · Личное сообщение · #21

Alchemistry
Похоже Вы имеете ввиду сплиттер? Если так, он уже пишется - будет вертикальный между treeview и списками и горизонтальный между списками, если их более одного.

>>резольвить apiset и показывать его модуль в списке под самим аписетом
Спасибо, хорошая идея, тем более и код под это дело уже имеется в другой программке. Только отображаться наверное будет отдельной колонкой, а не дополнительной строкой.
<< . 1 . 2 . 3 . 4 .
 eXeL@B —› Софт, инструменты —› PEAnatomist - внутренности PE-файлов

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