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

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

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

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

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

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

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

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

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

26
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
24.05.2017, 09:50
ziqp, это сделать нельзя, при запуске ехе отображается в память - шлепнуть его на диске не выйдет
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
24.05.2017, 11:04
ziqp, Для чего вам это нужно? Не для автообновления ли? Тогда есть такой вариант. Переименовывайте программу (это можно) И обновленную записывайте на место старой. (тоже можно)
На форуме эта проблема обсуждалась.
0
2649 / 1660 / 267
Регистрация: 19.02.2010
Сообщений: 4,392
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
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru