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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2012, 19:49   #11
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Цитата:
Ага. Но запуск из памяти, никто не отменил и это возможно. Проецируй образ в память, а физический мжно вообще удалить.
А ещё можно через драйвер, но это извращение, имхо.

Цитата:
А если пользователь увидев, что программа по каким-то причинам отказала ему показывать конфиденциальные данные, скопирует ее и запустит еще раз. Или от злости разошлет ее по тысяче других компьютеров?
Тогда надо просто скопировать перед запуском.

Цитата:
Идея нравится, но как осуществить?
Первое, что пришло в голову: при запуске проверить на запуск второй копии, если первый раз запущено, то скопировать "себя" в память и запустить новый процесс с указанием на точку входа копии. При запуске копия проверят на наличие ещё одной себя, "видит", что уже запущен оригинал, посылает ему exit и удаляет файл.
Kix.IV вне форума Ответить с цитированием
Старый 12.08.2012, 23:12   #12
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Эксперимент.
Скопировал сейчас калькулятор, запустил. Запустил IceSword, удалил им exe'шник этого калькулятора. Калькулятор работает.
Потом запустил
Код:
while (true)
{
	char* p = (char*)VirtualAlloc(0, 1048576, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
	std::fill(p, p + 1048576, 0);
}
После того как эта прога забила всю память и свалилась, калькулятор работать перестал.
Вывод: нефиг.
Somebody вне форума Ответить с цитированием
Старый 12.08.2012, 23:50   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от hon
А если пользователь увидев, что программа по каким-то причинам отказала ему показывать конфиденциальные данные, скопирует ее и запустит еще раз. Или от злости разошлет ее по тысяче других компьютеров?
ну, для начала, пользователь эту программу откуда-то получил..
Значит, у него есть линк на скачивание, либо эта программа у него есть в почте или download manadger'e.
Ну и что ему мешает сделать так, как я поступаю в 99% случаев - скопировать программу в отдельный каталог, там уже запустить? Будете искать копии по всем доступным дискам? А если копия программы на CD-ROM'е? И запущена она с CD ? удалить программу с CD будет достаточно сложно

Короче, ваш подход изначально пагубен, и, как Вам справедливо советовали в теме - меняйте алгоритм действий...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.08.2012, 23:55   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Эксперимент.
Скопировал сейчас калькулятор, запустил. Запустил IceSword, удалил им exe'шник этого калькулятора. Калькулятор работает.
Потом запустил
Код:
while (true)
{
	char* p = (char*)VirtualAlloc(0, 1048576, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
	std::fill(p, p + 1048576, 0);
}
После того как эта прога забила всю память и свалилась, калькулятор работать перестал.
Вывод: нефиг.
работал он пока спроецированные данные были в памяти, как только они должны были быть перезагружены кальк слетел.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.08.2012, 10:14   #15
DelhiProgramer
Пользователь
 
Регистрация: 10.08.2012
Сообщений: 84
По умолчанию

Изменение запускаемого файла в программе самого этого файла можно провернуть только с файлами COM
DelhiProgramer вне форума Ответить с цитированием
Старый 13.08.2012, 11:47   #16
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а не проще ли при старте скопироваться в какой-то временный каталог под рандомным именем и его же запустить, а исходный удалить? потом при закрытии приграммы удалить и второй файл
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 13.08.2012, 14:43   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

можно, но все это легко отслеживается, да и копия файла в другом месте не гарантирует, что не будет повторного запуска
p51x вне форума Ответить с цитированием
Старый 13.08.2012, 14:57   #18
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

эт почему она не гарантирует? .. если "красиво" все оформить никто не заметит .. было бы желание
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 13.08.2012, 18:53   #19
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
эт почему она не гарантирует?
Вытащил я файл из почты, запустил... что помешает мне его еще раз из почты вытянуть?
Перед запуском я скопировал этот файл в папку distribs, ну люблю я порядок... что помешает из дистрибсов достать еще одну копию?
...

П.С. Хотя одно помешает... прога, которая вдруг исчезла - почти однозначно будет помечена, как зловред и никогда больше не будет запускаться.

Последний раз редактировалось p51x; 13.08.2012 в 18:55.
p51x вне форума Ответить с цитированием
Старый 14.08.2012, 11:32   #20
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Кому надо, вот статья по запуску файла из памяти(асм).
Kix.IV вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть три программы. Их нужно объеденить в одну, тоесть чтоб при запуске программы были пункты меню для каждой из программ afirat Помощь студентам 9 28.04.2012 12:39
Проблема при запуске программы Neo_AVE C++ Builder 0 04.05.2011 15:38
mp3 при запуске программы - ? Evgenii Общие вопросы Delphi 8 12.08.2009 08:11
Эффекты при запуске программы Vladya Общие вопросы Delphi 10 17.03.2009 17:29
Ошибка при запуске программы MAcK Общие вопросы .NET 5 14.08.2008 15:12