exe перезаписать себя

Тема в разделе "WASM.BEGINNERS", создана пользователем Sun07, 2 май 2009.

  1. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    может ли exe перезаписать сам себя (без запуска сторонних exe)?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Может, но лучше не надо.
     
  3. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    может
     
  4. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    ну и как?
     
  5. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    прямым доступом к диску например
     
  6. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    придется только в таком случае парсер фс свой писать
     
  7. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    а ф-и DOS через INT 21h могут перезаписать запущенный exe?
     
  8. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    а, нет, они мне не подходят. У мя прога под Win :dntknw:
     
  9. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    а может процесс создать другой процесс в памяти, сам завершится, а новый процесс перезапишет exe?
     
  10. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    Удаленный поток создать
     
  11. BadLogin

    BadLogin Серёга =)

    Публикаций:
    0
    Регистрация:
    9 окт 2008
    Сообщения:
    82
    Адрес:
    Сайнт-Пи
    ну да ... VirtualAllocEx + WriteProcessMemory + CreateRemoteThread - пишешсься и выполняешься в другом процессе, а в инжект запихни TerminateProcess (твоего приложения), потом редактируй свой екзешник и снова запускай его хоть WinExec'ом ... Если надо, могу скинуть проект по инжекту в другой процесс (Visual Studio) ... потом могу скинуть пример, как выполняется TerminateProcess (Builder) ... ну а редактирование как-нибудь уж сам =) ... Напиши, что тебе нужно из предложенного мной.
     
  12. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    зачем так сложно?
    копируешь себя в новый .exe, патчишь новый .exe, запускаешь его, завершаешь исходный процесс, переименовываешь новый .exe в старый
     
  13. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    BadLogin, если есть на VB 6.0, кинь. Мне всё надо по этому делу.
     
  14. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Можно себя скопировать в temp directory, передать там себе управление (запустить), а старый ЕХЕ перезаписать, а потом обратно.
     
  15. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    нет, мне не подходит факт запуска второго exe. А можно выполняющемуся exe прописать другой путь, чтобы файл exe исчез из места запуска, но не перезапуская exe?
     
  16. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    ну варианта тут имхо 2:
    1) почитать статью о работе с занятыми файлами
    2) сделать MoveFile себя в левую (например временную) папку, а на своем месте создать пропатченый ехе
     
  17. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    а где хранятся данные о пути, с которого запущен процесс? И можно ли их изменить?
     
  18. Sun07

    Sun07 New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2009
    Сообщения:
    52
    прочитал бегло статью по работе с занятыми файлами, вопрос - там в примере только чтение кластеров, а запись, да ещё запущенного exe пройдёт?
     
  19. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    процесс привязан к объекту секции - так что нужно либо отвязать от нее процесс
    либо изменить файл на диске прямым доступом к диску и сбросить кеш фс
    конечно
    попробовал бы в ручную любой тулзой для анализа фс, чтобы не переспрашивать одно и тоже
    (winhex/flexhex/...)
     
  20. BadLogin

    BadLogin Серёга =)

    Публикаций:
    0
    Регистрация:
    9 окт 2008
    Сообщения:
    82
    Адрес:
    Сайнт-Пи
    Sun07
    нет! всё на си =(

    Здесь найдёшь даже готовый проект по внедрению в другой процесс с комментами
    http://wasm.ru/forum/viewtopic.php?id=32034

    а вот в эту фунцию
    Код (Text):
    1. DWORD WINAPI func(LPVOID)
    тебе нужно запихать TerminateProcess
    http://msdn.microsoft.com/en-us/library/ms686714(VS.85).aspx
    handle по PID объявить сможешь - пример есть в проекте с инжектом =)
    ну и конечно свое редактирование запихни после Terminate, а потом простой WinWxec =)

    вот только если для тебя критично запуск стороннего процесса - перезапуск твоего приложения - это не критично ?? оно оконное ?