Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как под Win2k/XP удалить ехе-файл из самого себя?  (Прочитано 8258 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Diletant
Помогающий

de
Offline Offline

« : 07-05-2004 10:21 » 

Собственно, сабж.  Единственное дополнение - создание и запуск bat-файла не предлагать,  сам знаю  Улыбаюсь. Но под Win2K/XP срабатывет не всегда.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 07-05-2004 10:49 » 

Когда-то давно такой вопрос уже всплывал...
Добавь в реестр в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce строчку "del FILE". При перезагрузке машины они сработают.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Diletant
Помогающий

de
Offline Offline

« Ответ #2 : 07-05-2004 11:11 » 

Если бы можно было перегружать систему, то и вопроса бы не воникло. В этом случае много чего можно предложить. К сожалению, нужно удалять "вживую"! Жаль
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 07-05-2004 11:19 » 

Diletant, а может у тебя bat не срабатывает потому, что твоя удаляемая программа еще не завершилась? Может в него какую-нибудь паузу поставить? В win есть аналог unix-ового sleep ?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #4 : 07-05-2004 11:41 » 

RXL, есть. причём работает только в бат-файлах: wait n
Записан

Daniloff
Помогающий

ru
Offline Offline

« Ответ #5 : 28-05-2004 17:13 » 

Ниже привожу исходник програмки под dos, который компилится в com файл и линкуется в ресурс исполняемого win32 файла как rcdata.
главный файл извлекает этот ресурс, пишет на диск, затем запускает его и завершается.
Сom-файл удаляет файл, заданные 2-м параметром ("родителя"), затем переименовывает в "родителя" файл, заданный 3-м параметром и убивает себя. Первый параметр командной строки - слово "repl".
Программа разработана для самоапгрейда другой программы.

Код:

.386
seg_a segment word public use16
assume cs{seg_a, ds{seg_a, ss{seg_a
org 100h
mal proc near

start{
cld
mov di,offset repl
mov si,81h
mov cx,5
lod1{ lodsb
cmp al,20h
je lod1
lod2{ or al,20h
scasb
lodsb
loopz lod2
jcxz work
jmp suicide
work{ cmp al,20h
jnz work2
lodsb
jmp short work
work2{ dec si
mov pf1,si
work3{ lodsb
or al,al
jz suicide
cmp al,20h
jnz work3
mov ds{[si-1(,cl
work4{ lodsb
or al,al
jz suicide
cmp al,20h
jz work4
lea ax,ds{[si-1(
mov pf2,ax
work5{ lodsb
or al,al
jz exec
cmp al,0Dh
jnz wk51
wk50{ mov ds{[si-1(,cl
jmp short exec
wk51{ cmp al,20h
jnz work5
jmp short wk50
exec{
mov bh,2Ch
mov ah,bh
int 21h
mov secs,dh

exec2{ mov dx,pf2
mov ah,41h
int 21h
jnc dals1
snv{ mov ah,bh
int 21h
cmp secs,dh
jz snv
inc byte ptr try
mov secs,dh
cmp byte ptr try,10
jz suicide
jmp short exec2

; call print_ax

dals1{ mov dx,pf1
mov di,pf2
mov ah,56h
int 21h
suicide{ mov ax,ds{[2Ch(
mov ds,ax
xor si,si
loop1{ lodsw
dec si
or ax,ax
jnz loop1
add si,3
mov dx,si
mov ah,41h
int 21h

push cs
pop ds
mov ah,4Ch
int 21h
mal endp

repl db 'repl '
try db 0
secs db ?
pf1 dw ?
pf2 dw ?
seg_a ends

end start
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines