Запись в свой *.ехе
От: DDG  
Дата: 28.04.02 19:03
Оценка:
Здравствуйте, господа! Помогите разобраться. Каким способом можно записать кое какие данные в свой же exe-ник?
Re: Запись в свой *.ехе
От: Dmitriy_Apraksin  
Дата: 29.04.02 05:55
Оценка:
Здравствуй DDG.

DDG>Здравствуйте, господа! Помогите разобраться. Каким способом можно записать кое какие данные в свой же exe-ник?


Я так полагаю, что тебе нужно записать в EXE, который на данный момент исполняется системой, т.е. является "открытым системой" ( потому что иначе — какие проблемы-то ? ). Следовательно, основная проблема — сделать исполняющийся EXE доступным на запись ( т.е. открыть его с доступом "GENERIC_WRITE" ). Естесственно,
вызов обычного CreateFileA/_lopen Windows жестоко обломает. Поэтому стандартные
методы тут не прокатят. Впрочем, под Win 9X есть такие штучки, как VxD, которые
работают в Ring 0 и которым в принципе дозволено практически все. Так что один из
вариантов — загрузить свой VxD и натравить его на свой же Exe-шник ( если не хочешь писать VxD, можешь сам перейти в Ring 0 и уже там сделать все, что надо
при помощи IFSMGR API ). Все прекрасно будет работать, но... с одной лишь оговоркой — данный метод не применим под Win NT/2K ( по причине отсутствия там
VxD ). В этом случае могу посоветовать только слегка поизвращаться — скажем,
из своего Exe-шника запустить еще какой-нибудь, при этом самому закрыться, далее второй Exe-шник ( уже без проблем ! ) пишет в твой и запускает тебя вновь, при этом сам закрывается... Извратно, но работать будет ( и, кстати, под любой Windows )

Dmitriy Apraksin
Re: Запись в свой *.ехе
От: grigsoft Беларусь http://www.grigsoft.ru/
Дата: 29.04.02 07:15
Оценка:
Здравствуйте DDG, Вы писали:

DDG>Здравствуйте, господа! Помогите разобраться. Каким способом можно записать кое какие данные в свой же exe-ник?

DDG> :???:

Сначала перемещаешь себя куда-нибудь в TEMP (заодно переименовывая в yhrb766.tmp), далее копируешь себя по старому имени, теперь исправляешь, что надо. При следующем старте не забудь удалить старую копию (а можно вписать куда-то в реестр и винда сама удалит при загрузке)

Я, правда, не пробовал, но должно работать.

Игорь
Re[2]: Запись в свой *.ехе
От: DDG  
Дата: 01.05.02 08:05
Оценка:
Здравствуйте Dmitriy_Apraksin, Вы писали:

DA> Я так полагаю, что тебе нужно записать в EXE, который на данный момент исполняется системой, т.е. является "открытым системой" ( потому что иначе — какие проблемы-то ? ). Следовательно, основная проблема — сделать исполняющийся EXE доступным на запись ( т.е. открыть его с доступом "GENERIC_WRITE" ).

DA> В этом случае могу посоветовать только слегка поизвращаться — скажем,
DA>из своего Exe-шника запустить еще какой-нибудь, при этом самому закрыться, далее второй Exe-шник ( уже без проблем ! ) пишет в твой и запускает тебя вновь, при этом сам закрывается... Извратно, но работать будет ( и, кстати, под любой Windows )

DA> Dmitriy Apraksin


Единственная проблема. Как сделать так, чтобы этот какой-нибудь Exe-шник исчез с HDD после манипуляций с моим основным Exe-шником.
Re[3]: Запись в свой *.ехе
От: adb Россия  
Дата: 02.05.02 10:03
Оценка:
Здравствуйте DDG, Вы писали:

DDG>Единственная проблема. Как сделать так, чтобы этот какой-нибудь Exe-шник исчез с HDD после манипуляций с моим основным Exe-шником.


Если пойдет то можно удалить его во время старта с помошью MoveFileEx с ключом DELAY_UNTIL_REBOOT. Но это только для NT линейки.
Другой вариант почти был написан "пишет в твой и запускает тебя вновь" Что теперь мешает удалить какой-нибудь из твоего?
Либо помутить чего-нибудь с .bat файлами — они себя удаляют без проблем.
Re[4]: Запись в свой *.ехе
От: DDG  
Дата: 02.05.02 14:29
Оценка:
Здравствуйте adb, Вы писали:


adb>Другой вариант почти был написан "пишет в твой и запускает тебя вновь" Что теперь мешает удалить какой-нибудь из твоего?


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

adb>Либо помутить чего-нибудь с .bat файлами — они себя удаляют без проблем.

Некрасиво.
Re: Запись в свой *.ехе
От: YuriS Германия www.yuris.de
Дата: 02.05.02 16:15
Оценка:
Здравствуйте DDG, Вы писали:

DDG>Здравствуйте, господа! Помогите разобраться. Каким способом можно записать кое какие данные в свой же exe-ник?

DDG>
Вот посмотри сдесь, что-то подобное уже обсуждалось. Запись в загруженный ЕХЕ-файл под NT
Автор: kong
Дата: 22.04.02
Может тебе поможет ...
Удачи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.