|
|
|
Изменение PE-заголовка в процессе выполнения программы16.07.2017, 07:53. Показов 2367. Ответов 8
Метки нет (Все метки)
Доброго времени суток!
Задался задачей изменить часть PE-заголовка в процессе выполнения программы (сразу хочу оговориться, что это не вирус). Все примеры самомодифицирующегося кода, кот. я нашел в интернете происходят в .code. Задача усложняется тем, что программа при запуске сначала считывает заголовки (и как я понял, делает это один раз при запуске и больше к ним не возвращается). Таким образом если я изменю заголовок после запуска, толку не будет никакого. Была идея сделать модификацию заголовка с помощью дос заглушки, но как ее запустить так, чтобы по ее завершению продолжала выполняться основная программа, я не нашел.. Решил спросить у более грамотных людей, чем я, может быть есть еще какие-нибудь варианты решения?
0
|
|
| 16.07.2017, 07:53 | |
|
Ответы с готовыми решениями:
8
Прерывание программы в процессе выполнения
|
|
Модератор
|
|
| 16.07.2017, 09:29 | |
|
PE заголовок считывает не программа, а ОС при настройке окружения для запуска программы пользователя. Поэтому все изменения вступят в силу лишь при следующем запуске. Это при условии, что ОС позволит модифицировать используемый файл.
DOS заглушка запускается лишь ОС, которая не умеет запускать файлы формата PE, но умеет запускать файлы формата MZ - т.е. DOS. Поэтому и название - DOS-заглушка. Думаю, что нужно "копать" в направлении упаковщиков файлов - подобия upx. Когда-то попадались статьи, в которых пояснялось пошаговое написание подобных пакеров (кажется, в электронной версии журнала "Хакер" за начало века).
1
|
|
|
|
|
| 16.07.2017, 09:50 [ТС] | |
|
Основную идею пакеров запаковки и распаковки функций я, как мне кажется, уловил. Хотя и не реализовывал.
Моей целью является конспирация .Нет приложения. А там своя специфика запаковки и распаковки, в принципе тоже вполне реализуемая. Но она не конспирирует .Нет.((( Я видел некоторые обфускаторы, которые выдавали .НЕТ приложения за обычные PE (не NET), и при этом они успешно запускались... в общем-то в связи с чем и связаны мои поиски..
0
|
|
|
Ушел с форума
|
|||
| 16.07.2017, 10:21 | |||
|
Даже если я запустил приложение, которое "не выглядит" как .NET, я могу, например, посмотреть (Process Explorer, Process Hacker, Toolhelp API и т.д.) список загруженных модулей или стеки потоков и увидеть там mscoree.dll. И таким образом узнать, что это все-таки .NET... Но можно исхитриться и попробовать модифицировать PE-заголовок в памяти процесса еще до того, как загрузчик вытащит из него нужные данные, которые относятся к .NET. В общем, сложно, но не невозможно, скорее всего. IDA Pro + отладчик и вперед с песней
1
|
|||
|
|
|||
| 16.07.2017, 12:12 [ТС] | |||
Были мысли по поводу перехвата CreateProcess, потом проверка - если это мое приложение, то меняем ПЕ-заголовок (добавляю офсет на .НЕТ метаданные) и запускаем как .НЕТ. Но способ не оч. хорош, т.к. на любой хук будут ругаться все известные антивирусы. Это не то, чтобы неприемлемо. Но неприятно До этого была идея как-то изменить заголовок с помощью дос-заглушки. Но если есть значение на PE File Header в DOS-заголовке, то дос программа не запускается. А если нет, то запускается и.... закрывается. Если из нее прыгнуть на адрес с PE-программой, то она будет пытаться тоже выполнятсься как дос... И тут тупик Потом появились идея запустить дос, изменить заголовок и потом из доса уже вызвать повторно CreateProcess. Даже не знаю, прокатит ли. Тут я уперся элементарно в то, как вызвать АПИ из доса . Технология устаревает, уже мало информации в сети. Вроде как теоретически вызывать можно, но не все.. Пока на этом встал
0
|
|||
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
|||
| 16.07.2017, 19:35 | |||
|
Добавлено через 33 минуты Да, забыл один нюанс. Для NET PE64 вместо передачи управления на AddressOfEntryPoint, нужно вызывать _CorExeMain из mscoree.dll.
0
|
|||
|
|
||
| 16.07.2017, 19:50 [ТС] | ||
|
0
|
||
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
||||
| 16.07.2017, 20:25 | ||||
|
Добавлено через 7 минут
1
|
||||
|
|
|
| 17.07.2017, 09:35 [ТС] | |
|
Спасибо! Буду разбираться! Мне всегда было интересно, как можно запустить программу из образа. В частности и из образов, созданных с помощью ngen. Попробую разобраться
0
|
|
| 17.07.2017, 09:35 | |
|
Помогаю со студенческими работами здесь
9
Создание структур в процессе выполнения программы В процессе выполнения программы открыть ехешник Создание массивов в процессе выполнения программы Создание объекта в процессе выполнения программы Создание массива в процессе выполнения программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
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
|