удаление EXE вовремя его выполнения

Тема в разделе "WASM.WIN32", создана пользователем spn_dd, 28 май 2006.

  1. spn_dd

    spn_dd New Member

    Публикаций:
    0
    Регистрация:
    24 май 2006
    Сообщения:
    22
    Адрес:
    Ukraine
    Вот такой вот вопросик.



    Как со стороны процесса Х, удалить его файл Х.ехе.



    Предложения по созданию Batch файла не предлагать.

    Файл должен быть удален именно в процессе выполнения Х.
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
  3. spn_dd

    spn_dd New Member

    Публикаций:
    0
    Регистрация:
    24 май 2006
    Сообщения:
    22
    Адрес:
    Ukraine
    и за это спасибо.
     
  4. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    ms-rem на форуме предлагал открыть девайс в raw режиме и работать с таблицей размещенмя напрямую



    у мыщъх есть статья по тому как восстанавливать удаленные файлы, почитайте
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Затереть файл в обход драйвера фс? Интересно.. Или даже удалить.

    Кстати, можно ведь переименовывать независимо от блокировки (кажется), не пойдёт?
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Действительно, можно даже перемещать. Ещё можно добавить такой файл в очередь на удаление после перезагрузки (MoveFileEx).



    А не пробовали открыть его с флагом FILE_FLAG_DELETE_ON_CLOSE?
     
  7. spn_dd

    spn_dd New Member

    Публикаций:
    0
    Регистрация:
    24 май 2006
    Сообщения:
    22
    Адрес:
    Ukraine
    Quantum







    Извиняюсь конечно, но кого это "ЕГО"?

    Если файл, то его загружает загрузчик методом файлового отображения на память, а не я, как дочерний процесс.







    Основным условием является именно то, что файл должен быть удален в процессе выполнения.





    IceStudent







    Это только кажется. И именно поэтому не пойдет.
     
  8. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    spn_dd



    Почему "только кажется", когда можно.
     
  9. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    spn_dd



    Попробовал. CreateFile не позволяет открыть такой файл даже без атрибутов R/W. Предложение отпадает.



    Переименовывать файл и перемещать можно.





    Тогда ресурс предложенный Asterix содержит исчерпывающий и достаточно универсальный ответ на сабж.
     
  10. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




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







    Да, переименовать можно. Это не кажется, а так оно и есть (проверено).



    Ни одного нормального решения этой проблемы не существует, все решения имеют недостатки.
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ms Rem



    Я проверял только на файлах, открытых загрузчиком, а он позволяет открывать на чтение. Но не был уверен насчёт файлов, которые заблокированы полностью. Сейчас проверил - переименовать не получилось.
     
  12. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    2Ms Rem





    а если внедрить код в другой процесс и из него открыть свой файл с этим флагом?
     
  13. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    То файл удалиться в момент закрытия этого хендла (в другом процессе). Тогда уж проще вызывать из внедренного кода DeleteFile в цикле, пока файл не удалиться (и ставить задержки Sleep при неудаче).

    Но в любом случае, файл удалиться только после завершения процесса.
     
  14. delme

    delme New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2005
    Сообщения:
    5
    А может записать в файл мусор во время выполнения? Тогда

    посмотрите здесь



    Пример: http://wasm.ru/forum/files/1335335943__demo.exe

    (только FAT32, но с NTFS тоже можно. Надо лишь правильно указать, как рассчитывать место на диске для записи).
     
  15. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Шутка: запускать файл с дискеты, тогда он вроде как целиком копируется в память\своп и видимо может быть удален до завершения процесса ;)) Вот если бы можно было как-то обмануть загрузчик и делать то же самое с файлом на диске :))
     
  16. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    leo

    Перехватить GetDriveType? Хотя может и что другое, это надо код загрузчика копать.
     
  17. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    А если в IMAGE_FILE_HEADER файла указан IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP, он обрабатывается только когда со сменного носителя загружается программка или в любом случае?
     
  18. LSK

    LSK New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    3
    CreateRemoteThread с адресом в DeleteFile
     
  19. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Похоже, что с removable это действительно шутка\байка - возможно что-то куда то и копируется, но DeleteFile напрямую все равно не срабатывает :dntknw:
     
  20. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    CloseHandle(4) in Windows 2000 only.