Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2012, 19:53   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ну если это защита, то самое время почитать о полиморфизме алгоритмов(самостоятельно изменяющийся код).
Человек_Борща вне форума Ответить с цитированием
Старый 28.08.2012, 19:55   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да ТС, вроде хочет именно файл изменить, а не процесс.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 28.08.2012 в 19:57.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.08.2012, 20:11   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
эта процедура своего рода защиты файла
Закрыли программу, сняли процесс - защита исчезла.
В чем смысл?
Цитата:
да ТС, вроде хочет именно файл изменить, а не процесс.
Так всетки? Я понял что речь идет о запущенного *.ехе файла - цитата из темы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.08.2012, 20:18   #14
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Не занимайтесь фигнёй.

Если не очевидно, то вот список, почему это не будет работать:
1. Файл может быть запущен с CD-ROM (read-only).
2. Файл может быть запущен с флешки с защитой от записи (read-only).
3. Файл может быть запущен с сетевой папки (read-only).
4. В 90% случаев программы устанавливаются в Program Files, что означает, что их можно читать, но нельзя изменять (ограниченная учётка).
5. Ну и самое главное - запущенный файл нельзя изменить из user mode, потому что он блокируется загрузчиком ОС.

Цитата:
но для того чтобы скопировать файл, его надо прочесть, значит существует способ снять запрет на модификацию кода
Это логика с какой планеты?

"Чтобы художник нарисовал портрет, ему надо увидеть человека, значит существует способ изменить человеку лицо"
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 28.08.2012, 20:19   #15
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Код:
как дописать некий код в конец запущенного *.ехе файла?
Запускается ваш exe, который меняет байтики в памяти процесса и ждет, пока процесс умрет, когда случается оно, ваш процесс меняет байтики в физ. файле.

Физически невозможно разлучить процесс и файл от которого порожден этот процесс(из пользователя уж точно нельзя).
Человек_Борща вне форума Ответить с цитированием
Старый 28.08.2012, 20:41   #16
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение

Это логика с какой планеты?

"Чтобы художник нарисовал портрет, ему надо увидеть человека, значит существует способ изменить человеку лицо"
в теории, то, что можно увидеть, то можно изменить: художник увидел человека, начал рисовать портрет, не понравился нос у чела - два решения, либо нос откусить и потом нарисовать, либо просто нарисовать без носа.

не в обиду или что-то там еще, просто так написал.

что по теме, есть файл *.ехе, размер 100 байт, запускаем *.ехе, она выполняется, в конце выполнения, в файл *.ехе дописывает или переписывает 101 и 102 байты ( вот что мне надо), через бат можно, но не нужно, с процессами я как свинья в апельсинах, можно еще запускать *1.ехе с параметром, затем завершать *.ехе, модифицировать *.ехе, самоликвидировать (удалять) *1.ехе. Только как самоликвидировать?
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 28.08.2012, 20:51   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в конце выполнения, в файл *.ехе дописывает или переписывает 101 и 102 байты ( вот что мне надо)
Ладно. Допустим я тебя поддерживаю (допустим!).
Расскажу как я обновляю одну из своих разработок. Она всегда запущена.
В ее ресурсах есть маленький ехе файл, который при определенных условиях извлекается и запускается на выполнение. Внутри себя он крутит цикл, проверяя, запущена ли материнская программа. Пока она запущена он тихонько ждет. Как только программа по некой команде завершает свой процесс, этот маленький ехе, определив что программа ему доступна, обновляет ее. После обновления он ее запускает, и уже обновленная программа удаляет этот маленький ехе.

Можешь попробовать сделать так - в ресурсах хранить что-то типа овербота.

Но все равно пока ты не раскрыл полностью цели сего колдовства я лично не смогу понять зачем такой геморрой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.08.2012, 20:58   #18
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

(offtopic mode on)

Цитата:
в теории, то, что можно увидеть, то можно изменить: художник увидел человека, начал рисовать портрет, не понравился нос у чела - два решения, либо нос откусить и потом нарисовать, либо просто нарисовать без носа.
Речь не о том, можно или нельзя, а о логике. Из того, что художник рисует нос, не следует, что он будет его молотком сносить.

Не нравится пример с художником, окей - бери пример с CD болванкой. Её отштамповали, ты её можешь читать. Писать? Не получится.

Иначе говоря, из возможности производить прямое действие автоматически не следует возможность производить обратное действие.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 28.08.2012, 21:13   #19
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Как только программа по некой команде завершает свой процесс, этот маленький ехе, определив что программа ему доступна, обновляет ее. После обновления он ее запускает, и уже обновленная программа удаляет этот маленький ехе.
СПС за идею, буду рыть в эту сторону, надеюсь с ресурсом работать не тяжело.

Цитата:
Иначе говоря, из возможности производить прямое действие автоматически не следует возможность производить обратное действие.
да я это знаю, но за пояснение все равно спс. прога будет запускатся с винта сто%
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 28.08.2012, 21:18   #20
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
да я это знаю, но за пояснение все равно спс. прога будет запускатся с винта сто%
Т.е. на пункт про Program Files ты решил закрыть глаза, потому что он тебе "неудобен".
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
конец программы в *.ехе xrob Общие вопросы Delphi 18 26.05.2011 03:24
Как узнать путь запущенного exe файла (С# WPF) Яр|/||< (^_^) WPF, UWP, WinRT, XAML 3 04.09.2010 16:37
Дописать в конец файла Cdevelop Общие вопросы C/C++ 1 25.03.2009 21:39
Дописать в конец файла Cdevelop Общие вопросы C/C++ 5 15.03.2009 16:46
Код ехе файла Micha Общие вопросы Delphi 4 09.10.2007 18:06