Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
 
ziqp
104 / 39 / 4
Регистрация: 03.09.2015
Сообщений: 696
#1

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

24.05.2017, 04:41. Просмотров 1054. Ответов 24
Метки нет (Все метки)

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

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

Добавлено через 54 минуты
Или на c++ есть альтернатива?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2017, 04:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление самого себя во время исполнения (C++):

Чтение информации с самого себя exe - C++ Builder
суть такая одна программа должна дописывать к exe заведомо не известный файл(группу файлов) а вторая программа должна сама с себя...

Верно ли, что масса самого тяжелого человека превышает массу самого легкого более, чем в 2 раза - C++ Builder
известна масса каждого человека из группы. верно ли, что масса самого тяжелого из них превышает массу самого легкого более чем в два раза.

Длина самого короткого и самого длинного слов - C++ Builder
помогите плз Дан текст. Найти длины самого короткого и самого длинного слов.

Изменение имени файла (самого себя) - C++ WinAPI
Собственно, вопрос в названии. Как изменить имя файла из под себя же? Т.е, если выполняется файл nameChanger.exe, то, после запуска и...

Время исполнения алгоритмов - C++
Дали задание "Экспериментально сравнить реализации этих двух алгоритмов по времени исполнения на различных наборах данных, различных по...

Ошибка во время исполнения - C++
При попытке запустить программу Visual Studio пишет: Unhandled exception at 0x011027ce in GLTore.exe: 0xC0000005: Access violation...

24
ziqp
104 / 39 / 4
Регистрация: 03.09.2015
Сообщений: 696
28.05.2017, 22:47  [ТС] #16
Это ТС'у нужен прямой доступ к файловой системе, после запуска программы просто стереть файл из списка ?)
Да, именно
Может он хочет сделать вирус который нельзя будет отследить, тогда надо полностью стереть файл из файловой системы после запуска ))
Цели другие. Глупо удалять вирус после запуска и потом снова добавлять в автозагрузку

ziqp, кстати, а вариант удаления после перезагрузки не подойдет? (MoveFileEx с флагом MOVEFILE_DELAY_UNTIL_REBOOT)
К сожалению нет. Мне нужно чтобы другие программы не имели доступа к моей именно во время исполнения
0
TRam_
280 / 288 / 75
Регистрация: 14.05.2017
Сообщений: 1,019
28.05.2017, 23:31 #17
Цитата Сообщение от ziqp Посмотреть сообщение
Мне нужно чтобы другие программы не имели доступа к моей
так твоя ж программа будет в оперативной памяти, к которой доступ получить из другого процесса гораздо проще, чем к её исполняемому файлу... Простейшие примеры - дебаггеры, которыми пользуешься для отладки. Они ж не жёсткий диск считывают.
0
ziqp
104 / 39 / 4
Регистрация: 03.09.2015
Сообщений: 696
30.05.2017, 07:22  [ТС] #18
Прошу прощения. Нужно именно ограничить доступ к образу файла
0
karaulov6
-42 / 23 / 2
Регистрация: 23.03.2013
Сообщений: 241
Завершенные тесты: 2
30.05.2017, 08:51 #19
Цитата Сообщение от ziqp Посмотреть сообщение
Глупо удалять вирус после запуска и потом снова добавлять в автозагрузку
Не вирус, который должен удалять сам себя, и добавлять в автозагрузку?

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

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


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

И все же, если наплевать на все запреты системы и насильно удалить exe в то время, когда он уже запущен, что будет? Краш?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,532
Завершенные тесты: 1
30.05.2017, 16:47 #21
Цитата Сообщение от ziqp Посмотреть сообщение
насильно удалить exe в то время, когда он уже запущен
Если каким-то сторонними, неподвластными операционной системе, чудесами вам удастся переформатировать ту область диска, где была размещена загруженная в данный момент программа, то, пока она не попытается к своей области на диске, ничего не произойдет скорее всего. А коли попытается, то выскочит какое-нибудь IOException и если программа не ожидала такого поворота, то просто вылетит и все.
0
ziqp
104 / 39 / 4
Регистрация: 03.09.2015
Сообщений: 696
30.05.2017, 19:00  [ТС] #22
Спасибо. Пойду рыться в explorer'е через отладчик. Эх, глядишь и до ядра доберусь

Добавлено через 7 минут
Кстати, вроде такой же эксперимент можно провести с флешкой. Вставьте флешку, запустите с неё программу, вытащите флешку. Программа работает и не выдает никаких ошибок

Да то же самое работало с дисками, когда программа просила вставить второй диск, в это время не завершаясь (если конечно не копировала себя на жесткий диск заранее)
0
karaulov6
-42 / 23 / 2
Регистрация: 23.03.2013
Сообщений: 241
Завершенные тесты: 2
30.05.2017, 22:24 #23
Ну это нужно лезть в файловую систему и каким-то образом удалить оттуда запись о файле, и все
0
ziqp
104 / 39 / 4
Регистрация: 03.09.2015
Сообщений: 696
31.05.2017, 12:02  [ТС] #24
Есть информация, какая dll отвечает за удаление файлов в системе?
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3139 / 307
Регистрация: 04.12.2011
Сообщений: 8,661
Записей в блоге: 5
02.06.2017, 08:22 #25
Цитата Сообщение от ziqp Посмотреть сообщение
насильно удалить exe в то время, когда он уже запущен
плохо не потому, что это дурной тон или чревато неприятностями. Это просто трудно сделать не ломая OS. Тут Вам вряд ли кто поможет. Владение хаком, это преимущество до тех пор, пока он не общедоступен. Иначе разрабы OS залатают дырку и всё.
Ну, то есть. это как на стену наплевать, если хочется пройти сквозь неё.
Вот набор, удаляющий папку запуска. Это на C++/Cli (.NET)
Тут деисталятор перед завершением запускает скрипт, который удаляет папку. Только на самом скрипте .vbs не кликайте (от греха). Там легко разобраться и сделать, что-то для себя.
Выкладываю, потому-как, помню - долго искал по кусочкам.
ps и речь идёт о том, что права не нарушаются. В моём случае это папка в CurrentUser
1
Вложения
Тип файла: zip sw.zip (2.1 Кб, 2 просмотров)
02.06.2017, 08:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2017, 08:22
Привет! Вот еще темы с ответами:

Ошибка во время исполнения - C++
Здравствуйте, вылазит ошибка: Debug Assertion Failed! Expression: string subscript out of range while(getline(ffc, bffc)) { int...

Время исполнения операций и циклов - C++
Каким образом рассчитать время на исполнение любой операции в коде? К примеру, дан исходник: #include <iostream> #include <cmath> ...

Ошибка во время исполнения runtime-error - C++
Добрый день. Программа компилируется на RAD Studio XE3. Нормально работает и показывает правильный результат. При отправке в проверочный...

Изменение значения переменной во время исполнения - C++
Задача: Преобразовать введенный с клавиатуры массив таким образом, чтобы в первой его половине располагались элементы , имевшие нечетный...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru