Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Удалить exe во время его исполнения

Мне необходимо удалить exe файл после того, как он запустился, чтобы его невозможно было анализировать (если, конечно, пропустить возможность дампа). Есть пару известных мне методов это сделать, но они очень костыльные:
Вытащить флешку после запуска программы. Она продолжит работать, но образа уже нигде не будет (что может вызвать runtime ошибку при запросе, например, к ресурсам, но это не важно). Создавать виртуальный диск и отключать его когда программа с него будет запущена (делает практически то же самое, что и метод 1.
Так как же нормально удалить exe во время исполнения? Может быть, работа с дисками на физическом уровне?


Ответ

Есть 1 очень сложный вариант для винды: 1. Создаём файл 2.exe он
1) создаёт область с ассемблерным кодом(VirtualAlloc на адрес 0x20000 например и ещё на 0x410000(для 1.exe))
2) считывает 1.exe в 0x410000 единым блоком
3) создаёт область с ассемблерным кодом(на адрес 0x20000 например)
4) переходит на ассемблер очищает все ассемблерные стеки и делает jmp 0x20000
5) ассемблерный код стирает из памяти 2.exe (тоже винапи упр. виртуальной памятью)
6) записывает туда же(откуда стёр 2.exe) 1.exe из памяти 0x410000 и jmp на этот код но тут не знаю сработает ли
можно попробовать скомпилить как-то по особому сам файл 1.exe как длл например и подгрузить в память процесса. Вобщем стоит покопать про вирт. память. Наверняка если удалить проецируемый exe и закрыть дескриптор(ы) файла то можно будет и файл стереть(тогда 2.exe ненужен вообще). Тестить надо.
Я не пишу вирус
Хорошо назовём это тестировщик уязвимостей Windows.

Комментариев нет:

Отправить комментарий