|
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 29
|
||||||
Добавление секции в Portable Executable10.02.2025, 23:35. Показов 4623. Ответов 28
Метки нет (Все метки)
Изучая PE исполняемых файлов стало интересно модифицировать свой hello_world.exe, чтобы он выводил какой-нибудь messagebox. Дело до messagebox-а ещё не долшо, потому что не получается даже секцию добавить, ибо windows мою модификацию обрабатывать отказывается. Порядок действий программы следующий:
1. Прочитать DOS, найти смещение до PE 2. В PE найти кол-во секций 3. Прочитать n секций, чтобы дойти до последней 4. Создать свою секцию 5. Записать секцию в таблицу секций 6. Добавить полезной нагрузки (опционально, ломается и без этого пункта) Далее код разбитый на вышеупомянутые пункты.
Возможно ли, что хеш я записываю write-ом, а надо insert-ом? Или же может быть такое, что когда я использую insert для новой секции, где-то на её место указывал какой-то указатель, чем я опять же могу ломать PE. Просто если это так, то как добавить секцию и возможно ли это автоматизировать под любое PE приложение вовсе?
0
|
||||||
| 10.02.2025, 23:35 | |
|
Ответы с готовыми решениями:
28
Процессы, модули и Portable Executable Portable Executable (PE-Формат. Теория) |
|
Модератор
|
||
| 14.02.2025, 17:57 | ||
Сообщение было отмечено Koresup как решение
Решение
Исходя из 1-го поста у Вас ошибки:
1. При вставке заголовка секций - не нужно раздвигать файл, т.к. все съедет. Обычно в PE файле достаточно места - можно просто перезаписать нули за последней записью в списке секций. Т.е. сделать что-то типа этого: file.write((char*)sections, sizeof(IMAGE_SECTION_HEADER) * (numOfSec + 1));2. У Вас новая секция записывается в конец файла, но в поле SizeOfRawData у Вас размер с учетом файлового выравнивания, а по факту там без файлового выравнивания.По правильному так вставлять секцию не следует. Нужно парсить весь EXE файл, т.к. там еще могут быть EOF данные, которые нужно также переносить.
1
|
||
|
Модератор
|
|
| 14.02.2025, 18:16 | |
|
Добавлю, чтобы передать управление на вставленный код нужно еще переопределить AddressOfEntryPoint, но и тут работать не будет т.к. шеллкод у Вас содержит 32 битный код который содержит абсолютные адреса:
В 64 битах он выглядит так и тут используется уже RIP адресация:
0
|
|
|
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 29
|
|
| 15.02.2025, 00:04 [ТС] | |
|
Morgot, alnmem.zip этот уже ошибку выбивает, моя просто закрывается.
0
|
|
|
0 / 0 / 0
Регистрация: 25.07.2022
Сообщений: 29
|
|
| 15.02.2025, 00:20 [ТС] | |
|
The trick, да, второй пункт уже исправил. Проблема в том, что использую insert, вместо write-а. Возникает вопрос - всегда ли будет кармашек из нулевых байтов после таблицы секций? Что, если после таблицы не будет места для ещё одного IMAGE_SECTION_HEADER?
0
|
|
|
Модератор
|
|||
| 15.02.2025, 12:20 | |||
|
0
|
|||
|
6 / 5 / 1
Регистрация: 06.11.2016
Сообщений: 39
|
||
| 15.02.2025, 14:47 | ||
Их можно даже перемешать.А заголовок можно пересоздать с нуля. Разве что Rich-сигнатуры потеряются.
0
|
||
|
Модератор
|
||
| 15.02.2025, 15:31 | ||
|
В нашем случае SECHDR - заголовки секций стоят "впритык" к данным секции .text. Как вставить новую запись не вызвав конфликт между заголовками и первой секцией? Если в файле данные секции переместить в другое место - это не избавит от того что заголовки секций будут размещены по RVA 0x1000.
0
|
||
|
6 / 5 / 1
Регистрация: 06.11.2016
Сообщений: 39
|
||
| 15.02.2025, 16:10 | ||
|
Ситуация довольно экзотическая. Если в заголовок не напихано недокументированного мусора, то для переполнения размера 1000h там должно быть около 90 секций (x32). А если напихано, то заголовок можно пересоздать. И хороший инструмент для такого: CFF Explorer. PS Посмотрел сейчас для примера notepad.exe от WinXP. Там впритык к последней секции в заголовке идёт блок Bound Import Directory. Еще один подводный камень автору темы.
0
|
||
|
Модератор
|
|||
| 15.02.2025, 16:29 | |||
|
упереться сразу же: Другое дело что практически никто так не делает.
0
|
|||
| 15.02.2025, 16:29 | |
|
Помогаю со студенческими работами здесь
29
Добавление секции в таблицу Добавление секции в EXE файл Добавление секции в нужное место на Elementor Добавление в очередь (xQueueSend) внутри критической секции Fasm section '.data' readable writeable executable и readable executable Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|