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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 20:32   #1
DTL
Новичок
Джуниор
 
Регистрация: 01.06.2009
Сообщений: 1
По умолчанию Изменение переменных в самом exe файле.

Хм... Тему я наверное не совсем правильно назвал, но... Вообщем у меня возник вопрос:

Есть программка, состоящая из одного exe файла. Например Project1.exe. Состоит из одной формы, на ней один edit1 и одна кнопка.

В процедуре создания формы прописано, что в edit вписываеться текст, хранящейся в переменной text1, определенной в этой процедуре.

Можно ли сделать так, что при нажатии на кнопку, значение переменной text1 заменялось тем текстом, который сейчас в edit1. Т.е. не просто в памяти но и в самом файле, чтобы при новом запуске Project1.exe в edit1 вписывалось это новое значение text1, а не то которое я присвоил ей, когда писал программу.

Можно ли сделать так не импользуя вспомогательные файлы (программка должна состоять только из одного файла Project1.exe) и реестр? И главное как?
Заранее спасибо.
DTL вне форума Ответить с цитированием
Старый 01.06.2009, 20:38   #2
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

нет. Windows не позволяет этого делать. Разве что может DLL внутрь зашить, потом вызвать выйти из программы, она отработает и тоже самозавершится, может только как то так.
Цитата:
Сделать можно, но сложно :-)
BaronTreep, это замечательное сообщение. Сделать можно всё. В т.ч. Windows пропатчить в Linux
((или где там можно без проблем издеваться над exe. ))
Вопрос в том как. И с трудозатратами<неделя.
Don't worry be happy

Последний раз редактировалось Izhic; 01.06.2009 в 20:49.
Izhic вне форума Ответить с цитированием
Старый 01.06.2009, 20:44   #3
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Сделать можно, но сложно :-)

Сообщение и правда содержательное /;-), но это значит, что ответить на подобный вопрос кратко не получится.

Если интерес имеется предлогаю поискать инфу по темам по темам: "маппинг", "инжект", "прообразование данные <-> код".

Последний раз редактировалось BaronTreep; 01.06.2009 в 20:55.
BaronTreep вне форума Ответить с цитированием
Старый 01.06.2009, 21:47   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Мда, сказать мало чего могу.
Для записи в память WriteProcessMemory - да Windows уж ну никак не позволяет :D
На счет файла, в файле эта переменная прописана по определенному адресу, можно открыть в IDA найти эту строку - узнать смещение. И потом открывать как бинарный файл и писать по тому смещению новое значение. Но соотвественно есть ограничения, например чтобы записать больше (длинее строку) чем та которая там же есть при компиляции. Вообщем есть много всякий мелочей, все зависит от более конкретной задачи.
BOBAH13 вне форума Ответить с цитированием
Старый 01.06.2009, 22:26   #5
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Цитата:
Для записи в память WriteProcessMemory - да Windows уж ну никак не позволяет :D
А как тогда работают всякие програмки для игр? Нажал кнопец и в игре нечто изменилось, очевидно произошла запись в память по адресу.

Вообще у виндовс относительно разной памяти есть флаги разрешения чтения/записи. Ещё есть функция, добавляющая процессу разные привелегии. Можно поставить программе привелегии отладчика, и тогда можно будет читать/писать все что угодно! Ведь так и работают отладчики, в том же Дельфи есть утилита Watch - можно поставить часики на ЛЮБУЮ переменную программы под отладкой и видеть её значение во время выполнения.
BaronTreep вне форума Ответить с цитированием
Старый 02.06.2009, 14:17   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Посмотри здесь, http://programmersforum.ru/showthrea...t=40394&page=2 там программа создаёт свою копию во временной папке и изменяет её, а при закрытии заменяет себя той копией с другими данными.
пыщь
JTG вне форума Ответить с цитированием
Старый 02.06.2009, 14:51   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: Зачем такая головомойка?
Во-вторых: уж если "замужЬ невтерпежЬ" попробуй функциями работы с ресурсами... Но все равно эт бессмыслица.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение текста в exe-шнике Иллидан Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 25 27.02.2010 15:59
изменение нескольких переменных в одном методе. goog Общие вопросы по Java, Java SE, Kotlin 5 01.03.2009 20:46
Изменение упакованного exe Marsik Софт 5 28.01.2008 10:30
Изменение .exe Kukkk Общие вопросы Delphi 3 19.09.2007 11:52