Форум: "Потрепаться";
Текущий архив: 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