Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Вниз

Может ли программа удалить свой 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
14-26762
KA-87
2003-05-22 22:12
2003.06.09
А сколько программеры зарабатывают?


1-26435
maxfiles
2003-05-29 04:07
2003.06.09
OnClick в MenuItem


4-26832
Scorp
2003-04-10 19:20
2003.06.09
Перехват изменения системного реестра


4-26849
-Sesh-
2003-04-08 15:47
2003.06.09
Как узнать коды кнопок если программа не активна


3-26378
Alex_x
2003-05-20 16:59
2003.06.09
Медленный переход на первую запись в базе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский