С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832

Удаление самого себя во время исполнения

24.05.2017, 04:41. Показов 7128. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Как программа может удалить саму себя во время исполнения без закрытия?

Как я думаю (теоретически), можно затереть место на жестком диске, где находится программа без стандартных команд удаления, где есть условия, что файл должен быть "свободен".
С этим мне в ассемблер?

Добавлено через 54 минуты
Или на c++ есть альтернатива?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2017, 04:41
Ответы с готовыми решениями:

Как можно удалить или очистить тело макроса после его исполнения из самого себя?
Скажите пожалуйста! Как можно удалить или очистить тело макроса после его исполнения из самого себя?

Удаление файлом самого себя
Может .exe удалить самого себя и как это сделать в VS15?

Удаление самого себя после выполнения
ребят прошу помидорками не кидатся первый мой мессадж если что прост опоправьте мня вопрос есть некий скрипт установки...

26
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
24.05.2017, 09:50
ziqp, это сделать нельзя, при запуске ехе отображается в память - шлепнуть его на диске не выйдет
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
24.05.2017, 11:04
ziqp, Для чего вам это нужно? Не для автообновления ли? Тогда есть такой вариант. Переименовывайте программу (это можно) И обновленную записывайте на место старой. (тоже можно)
На форуме эта проблема обсуждалась.
0
2623 / 1634 / 266
Регистрация: 19.02.2010
Сообщений: 4,343
24.05.2017, 12:40
ziqp, во время исполнения не получится - только после того, как прога отработает=закроется.
Удалить можно бат-файлом, который создаётся и запускается во время работы проги, и в котором крутится цикл
:repeat
del name.exe
if exist name.exe goto repeat
Батнику при этом желательно приоритет понизить, а то неизвестно сколько времени он будет крутиться вхолостую до закрытия программы (его ведь можно и не при обработке закрытия проги запустить - а раньше, т.к. до обработчика закрытия прога может не добраться (если вдруг по какому-то исключению или ассерту вылетит)).
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
24.05.2017, 16:24
VTsaregorodtsev, еще существует вариант с длительным пингом из батника как таймера ожидания завершения программы. Типа запускается bat-файл непосредственно перед завершением программы, ожидает с помощью пинга закрытия программы, а потом удаляет все, что нужно.
Просто так, к слову.
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
24.05.2017, 16:32  [ТС]
Я имею в виду насильное удаление, чтобы образ самого файла (exe) не существовал, а программа была уже запущена в оперативной памяти. Что вы думаете об этом? Теоретически возможно? Ведь когда программа в памяти и полностью загружена, она уже не достает информацию из образа
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
24.05.2017, 16:51
ziqp, устройство размещения программы в памяти сложнее, чем вы вероятно сейчас представляете.
Если кто и может в трех словах пролить свет на все это таинство, то это только славный Убежденный.
1
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
24.05.2017, 17:32  [ТС]
Я его представляю себе так:
С образа программа выгружает себя в оперативную память, все функции всегда расположены по разным адресам с каждым запуском программы. Все, что вы меняете отладчиком, вы меняете в оперативной памяти. Если программа зашифрована, она также расшифровывает себя и перезаписывает также в оперативной памяти. Единственное где я не уверен, это как работает peb и teb. Не знаю, нужен ли им exe, чтобы программа не крашалась
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
24.05.2017, 19:11
Цитата Сообщение от SatanaXIII Посмотреть сообщение
только славный Убежденный.
Он уже проливал свет здесь: Может ли программа удалить себя?
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
24.05.2017, 22:31
Цитата Сообщение от ziqp Посмотреть сообщение
она уже не достает информацию из образа
Это не так. Ей иногда требуются Ресурсы, которые она берет по мере необходимости. В старину было такое понятие - Оверлеи. Они и нонче, наверное, используются, только механизм скрыт.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
25.05.2017, 11:45
Тот факт, что нельзя удалять файл от запущенного приложения - это не есть какая-то обязаловка, это всего лишь одна из концепций работы операционных систем. По каким-то причинам им надо было сделать так. И если так сделали, то скорее всего для этого имелись объективные причины

Цитата Сообщение от Байт Посмотреть сообщение
В старину было такое понятие - Оверлеи. Они и нонче, наверное, используются, только механизм скрыт
Механизм как таковой остался, просто он с уровня приложения ушёл на уровень операционной системы и превратился в swap (файл подкачки)
1
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
26.05.2017, 15:54
Цитата Сообщение от ziqp Посмотреть сообщение
она уже не достает информацию из образа
Если достает, то это инициатива самой программы, а не ОС (при чем программа для этого использует обычные API чтения (ReadFile etc), т.е. особых механизмов работы с оверлеями нету). Если бы это было не так, то не работали бы различные PE-упаковщики/-протекторы/-крипторы. Есть исключение, к примеру NET-приложения, но автору PE-упаковщика достаточно похучить ZwMapViewOfSection (подсовываем оригинальный образ) и будет работать.
Цитата Сообщение от ziqp Посмотреть сообщение
Теоретически возможно?
На сколько мне известно это невозможно. ZwUnmapViewOfSection над exe-образом срабатывает корректно, но файл после этого все равно удалить нельзя.

Добавлено через 5 минут
Цитата Сообщение от ziqp Посмотреть сообщение
Единственное где я не уверен, это как работает peb и teb. Не знаю, нужен ли им exe, чтобы программа не крашалась
PEB и TEB не с кем не работают . Это просто структуры содержащие информацию о окружении. Работают с ними.
0
23 / 23 / 6
Регистрация: 23.03.2013
Сообщений: 245
26.05.2017, 21:15
Это ТС'у нужен прямой доступ к файловой системе, после запуска программы просто стереть файл из списка ?)
0
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
27.05.2017, 06:14
ziqp, кстати, а вариант удаления после перезагрузки не подойдет? (MoveFileEx с флагом MOVEFILE_DELAY_UNTIL_REBOOT)
0
23 / 23 / 6
Регистрация: 23.03.2013
Сообщений: 245
27.05.2017, 10:41
Может он хочет сделать вирус который нельзя будет отследить, тогда надо полностью стереть файл из файловой системы после запуска ))
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
28.05.2017, 22:47  [ТС]
Это ТС'у нужен прямой доступ к файловой системе, после запуска программы просто стереть файл из списка ?)
Да, именно
Может он хочет сделать вирус который нельзя будет отследить, тогда надо полностью стереть файл из файловой системы после запуска ))
Цели другие. Глупо удалять вирус после запуска и потом снова добавлять в автозагрузку

ziqp, кстати, а вариант удаления после перезагрузки не подойдет? (MoveFileEx с флагом MOVEFILE_DELAY_UNTIL_REBOOT)
К сожалению нет. Мне нужно чтобы другие программы не имели доступа к моей именно во время исполнения
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
28.05.2017, 23:31
Цитата Сообщение от ziqp Посмотреть сообщение
Мне нужно чтобы другие программы не имели доступа к моей
так твоя ж программа будет в оперативной памяти, к которой доступ получить из другого процесса гораздо проще, чем к её исполняемому файлу... Простейшие примеры - дебаггеры, которыми пользуешься для отладки. Они ж не жёсткий диск считывают.
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
30.05.2017, 07:22  [ТС]
Прошу прощения. Нужно именно ограничить доступ к образу файла
0
23 / 23 / 6
Регистрация: 23.03.2013
Сообщений: 245
30.05.2017, 08:51
Цитата Сообщение от ziqp Посмотреть сообщение
Глупо удалять вирус после запуска и потом снова добавлять в автозагрузку
Не вирус, который должен удалять сам себя, и добавлять в автозагрузку?

Где-то логика потерялась ))))

Так через доступ к процессу можно будет узнать путь к программе, и прочитать содержимое.
Изменить образ нельзя никаким образом если программа уже запущена...


Если нужно просто запретить открывать образ для чтения, то наверно можно использовать открытие файла с запретом чтения, не знаю)
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
30.05.2017, 13:05  [ТС]
про автозагрузку это я в пример к вирусу привел

И все же, если наплевать на все запреты системы и насильно удалить exe в то время, когда он уже запущен, что будет? Краш?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.05.2017, 13:05
Помогаю со студенческими работами здесь

Как задать программе время исполнения и время закрытия?
Подскажите пожалуйста как можно задать время исполнения и время закрытия программы допустим нужно запустить файл start 1.txt и через...

Перекомпиляция самого себя
Есть программа, скажем самая простая - консольная, которая выводит одно число, жеско прописано в коде... Цель: программа должна...

Копирование самого себя
Здравствуйте уважаемые кодеры у меня такой вопрос: Как можно скопировать самого себя не зависимо от имени своего файла? Заранее...

Указатель на самого себя
Дана переменная-указатель ,надо описать ее тип так,чтобы он соответствовал указателю на ее саму.

Ссылка на самого себя
Подскажите пожалуйста, как правильно передать ссылку на экземпляр класса, из которого мы создаем новый класс. $this->users = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru