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

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

 eXeL@B —› Вопросы новичков —› Несколько PE заголовков в одном файле.
<< . 1 . 2 . 3 .
Посл.ответ Сообщение

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

Создано: 12 января 2020 01:00 New!
Цитата · Личное сообщение · #1

Всем привет. Писал тут небольшой сканер файлов. И с удивлением для себя обнаружил, что многие exe как матрешки нашпигованы PE заголовками. То есть несколько файлов объединены последовательно друг за другом.
Ладно таким страдают всякие джойнеры, но нет вполне себе уважаемые программы. Есть идеи с какой практической целью такое делается???


Ранг: 325.1 (мудрец)
Статус: Участник

Создано: 16 января 2020 00:06 New!
Цитата · Личное сообщение · #2

VOLKOFF

> не такая уж тривиальная задача точно выдернуть файл без динамического анализа

Кстате SDK забанен за то что выложил инфектор. Получилось что лишь несколько самых простых ав его находят сигнатурно. Более продвинутые детект не вызывают, так как не смотря на наличие сигнатуры, на неё вероятно нет ссылок, те образ не рабочий.

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

zombi-vadim

> Супер мега валидатор PE

ntldr не супер и не мега, он может и ошибки в формате неплохо пропускать. Так что если ваша проверка покажет что формат невалид, то всё равно загрузка может пройти успешно. Это значит что есть лишь один способ узнать наверняка что формат валид - отобразить пе через штатный системный апи.

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

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

zombi-vadim
бери паяльникотладчик и задавай свои вопросы тем самым программам

ClockMan пишет:
размер PE хидера не может превышать 1000 байт


может


{ Атач доступен только для участников форума } - bigheader.7z

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

Создано: 20 января 2020 19:47 · Поправил: zombi-vadim New!
Цитата · Личное сообщение · #4

Не хочу создавать новую тему. Я знаю что размер SizeOfOptionalHeader обычно составляет 224 байта для 32 разрядного и 240 байт для 64 разрядного файла. Но эти значения не фиксированы. А также NumberOfRvaAndSizes необязательно имеет значение 10 директорий. Но на практике подобного файла я в жизни не видел. Поэтому (в моем понимании)чисто теоретически OptionalHeader может быть увеличен только за счет добавления новых каких то своих директорий. Интересно спросить у опытных людей насколько велика вероятность встретить в живой природе подобный файл?


Ранг: 325.1 (мудрец)
Статус: Участник

Создано: 20 января 2020 23:52 · Поправил: difexacaw New!
Цитата · Личное сообщение · #5

zombi-vadim

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


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

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

zombi-vadim пишет:
Но на практике подобного файла я в жизни не видел.


Линкер Unilink имеет такую структуру.
ftp://ftp.styx.cabel.net/pub/UniLink/ulnb1137.zip


Ранг: 325.1 (мудрец)
Статус: Участник

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

hors

Это хорошо что имеет структуру, значит что пока авер не увидел, те на анализ не пошло

А по делу есть ведь официальные доки --> Link <--

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

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

difexacaw пишет:
изврат формата посмотреть

То есть штатный линкер не позволяет подобного делать, но мелкомягкие допускают изменение размеров OptionalHeader, любые изменения которых авер палит как вирус.Забавная ситуация.


Ранг: 325.1 (мудрец)
Статус: Участник

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

zombi-vadim

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

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

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

zombi-vadim
Можно и уменьшать и увеличивать кол-во директорий в опц.заголовке.
Уменьшать - в зависимости от subsystem version можно, например до 3 (5.0 или 5.1) или до 11 (6.3, т.к. в этом случае обязательна директория LoadConfig с флагами для CFG), адекватные антивирусы и реагируют на это адекватно. unilink выше тому пример - его "детектят" только параноики и пустышки, едва завидев что-то отличное от майкрософтовского (ну или борландовского) пролога на точке входа или что им там ещё вздумается.
Увеличивать - сколько влезет, только синхронизируйте с SizeOfOptionalHeader, т.к. именно этим полем файлового заголовка определяется смещение к таблице секций (если конечно вы специально не делаете перекрывающиеся заголовки, тут уже антивирусы вполне обоснованно могут возмутиться). Только смысла в этом нет - ваша программа будет единственной, кто воспользуется этими директориями, и в этом случае проще и надёжнее разместить данные из этих директорий просто среди других данных\кода программы.
PS: в ms-доках описано много правил формата, нарушение которых совсем не препятствует нормальной загрузке и совсем необязательно вызывает тревогу у "контролёров".

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

Создано: 21 января 2020 02:14 · Поправил: zombi-vadim New!
Цитата · Личное сообщение · #11

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


Ранг: 325.1 (мудрец)
Статус: Участник

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

zombi-vadim

Врядле решение возможно. Загрузка модуля проходит в две фазы, это его отображение ядром. Там только проверки формата необходимые для отображения. Ядро не возвращает подробную инфу про ход загрузки и что бы такое провернуть нужно ядерный загрузчик трассировать, гиблая затея. Вторая фаза это уже работа юзер загрузчика, он уже подробно всё разбирает в формате и может подробный лог вести. Даже если создать тестовый процесс и попытаться загрузить модуль без передачи управления, то найдётся ошибка не в формате, а скорее в смещениях, которые не проверяет ядро(релоки например).

Эта задача не имеет решения, если прошло отображение, то образ валид. Что бы выяснить почему отображение не удалось используется отладка ядра. Как это сделать автоматикой хз. Я уже говорил что если образ не валид, то всё равно может быть успешно загружен

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

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

difexacawДа мне просто хотелось бы написать более устойчивый редактор PE типа PE Tools, который не сходит с ума после не корректного редактирования файла. Это так как хобби, одни марки собирают, другие страдают ерундой как я.


Ранг: 325.1 (мудрец)
Статус: Участник

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

zombi-vadim

Я бы загрузил модуль, ограничив возможность исполнения и снял загрузочный лог. Это единственное норм решение. Проверять формат на валид это бред. Как заблокировать исполнение, нужно немного подумать, это системная задача.
<< . 1 . 2 . 3 .
 eXeL@B —› Вопросы новичков —› Несколько PE заголовков в одном файле.

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