Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.09;
Скачать: CL | DM;

Вниз

Может ли программа удалить свой exe файл или хотя бы   Найти похожие ветки 

 
Malder ©   (2003-05-21 21:02) [0]

Понимаю, что тема, наверняка, обсуждалась не раз, но в связи с неработоспособностью поиска - хочу спросить еше раз о ваших соображениях на этот счет. Вариант с bat"ником не предлагать.

P.S. Под термином "испортить" я понимаю неработоспособность exe файла (варианты с ключом в реестре или доп. файлом также не предлагать).


 
Anatoly Podgoretsky ©   (2003-05-21 21:10) [1]

Нет


 
N127   (2003-05-21 22:56) [2]

Деинсталлятор, к примеру, создаёт копию или пишет удалялку в temp и спокойно удаляет основную свою копию.


 
Digitman ©   (2003-05-22 08:28) [3]


> Malder


Может. Но это - из разряда "трюков".

"Трюк" с удалением файла в Win9x/Me и NT достаточно прост (а где удаление, там и модификация возможна), а вот с Винтукеем и ХР дело обстоит сложнее.


 
Calm ©   (2003-05-22 08:36) [4]

В статьях на этом сайте когда я видел статью, где описан трюк с удалением exe путем запуска dll, которая как-то хитро должна быть запущена и т.д. и т.п. Но про какие винды речь шла, не помню.


 
Anatoly Podgoretsky ©   (2003-05-22 09:07) [5]

Зачем обсуждать, с другими файлами, если автор четко указал НЕ НАДО


 
aleksey_sv ©   (2003-05-22 10:26) [6]

У меня один знакомый устраивался на одну фирму. Ему дали проверочное задание - удалить свой екзешник. Ну, чо сделал. Он как то встраивался в процесс другой программы и оттуда валил свой екзешник.


 
MC TOL ©   (2003-05-22 10:43) [7]

Я уже неоднократно писал в форумы не этом сайте, как это можно сделать и в Win98, и в Win2k/XP. Делается это так (см. ниже). Попробуйте, вам понравится!

program delself;

uses
windows;

procedure DeleteSelf;
var hModule:THandle;
szModuleName:array[0..MAX_PATH] of char;
hKrnl32 : THandle;
pExitProcess, pDeleteFile, pFreeLibrary,pUnmapViewOfFile : pointer;
ExitCode:UINT;
begin
hModule:= GetModuleHandle(nil);

GetModuleFileName(hModule, szModuleName, sizeof(szModuleName));


hKrnl32 := GetModuleHandle ( "kernel32" );
pExitProcess := GetProcAddress ( hKrnl32, "ExitProcess" );
pDeleteFile := GetProcAddress ( hKrnl32, "DeleteFileA" );
pFreeLibrary := GetProcAddress ( hKrnl32, "FreeLibrary" );
pUnmapViewOfFile := GetProcAddress ( hKrnl32, "UnmapViewOfFile" );

ExitCode := system.ExitCode;

if($80000000 and GetVersion())<>0 then
// Win95, 98, Me
asm

lea eax, szModuleName
push ExitCode
push 0
push eax
push pExitProcess
push hModule
push pDeleteFile
push pFreeLibrary
ret
end
else
begin
CloseHandle(THANDLE(4));

asm
lea eax, szModuleName
push ExitCode
push 0
push eax
push pExitProcess
push hModule
push pDeleteFile
push pUnmapViewOfFile
ret
end
end
end;

begin
DeleteSelf;
end.



 
Digitman ©   (2003-05-22 10:54) [8]


> MC TOL


а теперь - подключи VCL к этому "трюковому" коду, задействуй объект TApplication, создай форму и посмотри, что из всего этого выйдет


 
MC TOL ©   (2003-05-22 11:03) [9]

>Digitman © (22.05.03 10:54)

Создал форму, на кнопку повесил выполнение процедуры. Нажимаю кнопку - форма закрывается, exe-файл удаляется. Что я делаю не так?


 
Digitman ©   (2003-05-22 11:19) [10]


> MC TOL


все ты делаешь так, но вот только исполнить трюковой код под встроенным в IDE Delpi отладчиком не удастся)... не говоря уже о пошаговой трассировке).. hung-up гарантирован !


 
Danilka ©   (2003-05-22 11:21) [11]

ну вот, а я купился.

Создал форму, на кнопку повесил выполнение процедуры. Нажимаю кнопку - форма закрывается, exe-файл остался. Что я делаю не так?

WinXP


 
Digitman ©   (2003-05-22 11:44) [12]


> Danilka


поэтому и говорю - трюк в вышеприведенном виде "не катит" для ХР



 
MC TOL ©   (2003-05-22 13:15) [13]

Трюк в вышеприведенном виде "катит" под любыми виндами. Только что еще раз проверил. Единственное - да, действительно, из отладчика Delphi он не работает, это я тоже заметил. Но, извините, вы все свои программы только из отладчика запускаете, или все же иногда запускаете сами ехе файлы?


 
MC TOL ©   (2003-05-22 13:20) [14]

Извиняюсь! Под ХР действительно не работает, попутал компьютеры. Еще раз приношу извинения. В итоге - работает только под Win 98 и 2k.


 
Anatoly Podgoretsky ©   (2003-05-22 13:30) [15]

И это тоже не верно, работает только при определенных условиях, тебе не зря пример с ИДЕ привели, а операционных систем гораждо больше, чем 98 и 2000, а еще к ним есть и сервис паки.



Страницы: 1 вся ветка

Текущий архив: 2003.06.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
7-26795
Sliski Slimak
2003-03-21 16:53
2003.06.09
Как же всё-таки получить звук с микрофона и вывести его ?


6-26625
Arkara
2003-04-06 02:09
2003.06.09
Как вызвать стандартную звонилку Windows?


1-26434
Pattern
2003-05-25 19:32
2003.06.09
Как убрать заголовок формы MDIChild?


8-26622
SDS
2003-02-21 14:27
2003.06.09
Как уменьшить размер TBitmap


1-26604
Кирилл Г.
2003-05-28 14:25
2003.06.09
Обьединение в Ворде