Файлы
От: Nixa  
Дата: 22.05.05 02:19
Оценка:
задачка следующая:
нужно после запуска первого например exe он находится например c:\e.exe(директория может меняться)
скопировать на место !!!себя!!! другой экзе, т.е. предварительно себя удалить, и запуститься,
реально такое сделать?

Спасибо
Re: Файлы
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.05.05 02:21
Оценка:
Здравствуйте, Nixa, Вы писали:

N>реально такое сделать?


писать в файл загруженного исполняемого модуля нельзя.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Файлы
От: Nixa  
Дата: 22.05.05 03:12
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Nixa, Вы писали:


N>>реально такое сделать?


A>писать в файл загруженного исполняемого модуля нельзя.


а с помощью батника например какнеть удалиться а потом скопировать?
предварительно запустив батник, реально?
Re[2]: Файлы
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 22.05.05 07:02
Оценка:
Hello adontz, you wrote:

>> реально такое сделать?

> писать в файл загруженного исполняемого модуля нельзя.

Можно.
Есть пример самомодифицирущейся проги. Но там хакерские методы, недокументированые фичи. Пример не работает под XP, т.к. там кое-что поменялось.

--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9
Re[2]: Файлы
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 22.05.05 07:02
Оценка:
Hello adontz, you wrote:

>> реально такое сделать?

> писать в файл загруженного исполняемого модуля нельзя.

Можно.
Есть пример самомодифицирущейся проги. Но там хакерские методы, недокументированые фичи. Пример не работает под XP, т.к. там кое-что поменялось.

--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9
Re[2]: Файлы
От: DMach Россия http://www.1Gb.ru
Дата: 22.05.05 08:42
Оценка:
N>>реально такое сделать?
A>писать в файл загруженного исполняемого модуля нельзя.

Можно его предварительно переименовать а потом предварительно удалить =)
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[3]: Файлы
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.05.05 09:54
Оценка:
Здравствуйте, Slava Antonov, Вы писали:

SA>Есть пример самомодифицирущейся проги. Но там хакерские методы, недокументированые фичи. Пример не работает под XP, т.к. там кое-что поменялось.


Нет, ну это не серьёзно. От каких хаков головной боли больше чем пользы.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Файлы
От: Alex Alexandrov США  
Дата: 22.05.05 14:17
Оценка:
Здравствуйте, Nixa, Вы писали:

N>задачка следующая:

N>нужно после запуска первого например exe он находится например c:\e.exe(директория может меняться)
N>скопировать на место !!!себя!!! другой экзе, т.е. предварительно себя удалить, и запуститься,
N>реально такое сделать?

N>Спасибо


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

В основной программе — скачиваем обновление во входной файл и запускаем перезапускалку.

А вообще это уже много раз обсуждалось...
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
It's kind of fun to do the impossible (Walt Disney)
Re[4]: Файлы
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 23.05.05 00:30
Оценка:
Hello adontz, you wrote:

>> Есть пример самомодифицирущейся проги. Но там хакерские методы, недокументированые фичи. Пример не работает под XP, т.к. там кое-что поменялось.

> Нет, ну это не серьёзно.

Серьезно это или нет — другой вопрос. Но факт налицо — модифицировать загруженный exe-модуль — можно.

--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9
Re: Файлы
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 23.05.05 07:57
Оценка:
Здравствуйте, Nixa, Вы писали:

N>задачка следующая:

N>нужно после запуска первого например exe он находится например c:\e.exe(директория может меняться)
N>скопировать на место !!!себя!!! другой экзе, т.е. предварительно себя удалить, и запуститься,
N>реально такое сделать?

1) Проверяем наличие файлов с расширением .old. Если есть — удаляем.
2) Переименовываем свой экзешник в .old (он сам себя может переименовать).
3) Пишем под старым именем новый экзешник (т.е. получаем экзешник уже новой версии).
4) Запускаем новый экзешник, выходим.
Т.е что-то вроде:

  // проверим существование обновлений
  if FileExists('\\Server\Updates\myprog.exe') and FilesNotEqual('\\Server\Updates\myprog.exe','myprog.exe') then 
     begin
       // удалим старые версии    
       if FileExists('myprog.old') then DeleteFile('myprog.old');
       // переименуемся  
       RenameFile('myprog.exe','myprog.old');
       // скопируем обновления
       CopyFile('\\Server\Updates\myprog.exe','myprog.exe');
       // запустим новую версию
       RunFile('myprog.exe');
       // закроем сами себя (старую версию)
       ExitFromProgram;
     end;


Будет работать только на NT/2000/XP. И никаких хакерских методов
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re: Файлы
От: doig-u Россия  
Дата: 23.05.05 10:00
Оценка:
Здравствуйте, Nixa, Вы писали:

N>задачка следующая:

N>нужно после запуска первого например exe он находится например c:\e.exe(директория может меняться)
N>скопировать на место !!!себя!!! другой экзе, т.е. предварительно себя удалить, и запуститься,
N>реально такое сделать?

Посмотрите в сторону самоудаляющихся программ..
Т.е. просто после запуска прога грохает свой файл и копирует на его место новый.

Например:
здесь
Автор(ы): Шитц Виталий
Дата: 28.10.2004
Как сделать чтобы запущеный exe сам себя удалил?
— на русском.
здесь — то же, но на англ. и пошире.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.