Как сделать чтобы запущеный exe сам себя удалил?

1996
знаков
4
таблицы
0
изображений

Шитц Виталий

Как сделать чтобы запущеный exe сам себя удалил? Можно сгегерировать BAT-файл и выполнить его, а можно и по другому:

Этот код требует, чтобы была определена переменная окружения COMSPEC, работает на всех ОС Windows.

После вызова функции нужно немедленно выходить из программы, иначе не сработает.

Автор Tony Varnas.

BOOL SelfDelete()

{

 TCHAR szFile[MAX_PATH], szCmd[MAX_PATH];

 if((GetModuleFileName(0,szFile,MAX_PATH)!=0) &&

 (GetShortPathName(szFile,szFile,MAX_PATH)!=0))

 {

 lstrcpy(szCmd,"/c del ");

 lstrcat(szCmd,szFile);

 lstrcat(szCmd," >> NUL");

 if((GetEnvironmentVariable("ComSpec",szFile,MAX_PATH)!=0) &&

 ((INT)ShellExecute(0,0,szFile,szCmd,0,SW_HIDE)>32))

 return TRUE;

 }

 return FALSE;

}

Следующий код работает только под NT, автор Gary Nebbett:

include <windows.h>

int main(int argc, char *argv[])

{

 char buf[MAX_PATH];

 HMODULE module;

 

 module = GetModuleHandle(0);

 GetModuleFileName(module, buf, MAX_PATH);

 CloseHandle((HANDLE)4);

 

 __asm

 {

 lea eax, buf

 push 0

 push 0

 push eax

 push ExitProcess

 push module

 push DeleteFile

 push UnmapViewOfFile

 ret

 }

 

 return 0;

}

Ну а это – вариант предыдущего, но под Win9x, автор Tony Varnas.

int main(int argc, char *argv[])

{

 char buf[MAX_PATH];

 HMODULE module;

 

 module = GetModuleHandle(0);

 GetModuleFileName(module, buf, MAX_PATH);

 __asm

 {

 lea eax, buf

 push 0

 push 0

 push eax

 push ExitProcess

 push module

 push DeleteFile

 push FreeLibrary

 ret

 }

 

 return 0;

}

Ну и два последних в одной функции:

void SelfDelete()

{

 char buf[MAX_PATH];

 HMODULE module;

 DWORD fnFreeOrUnmap;

 

 module = GetModuleHandle(0);

 GetModuleFileName(module, buf, MAX_PATH);

 // На случай Win9x

 if(0x80000000 & GetVersion())

 {

 fnFreeOrUnmap = FreeLibrary;

 }

 // для ядра WinNT

 else

 {

 fnFreeOrUnmap = UnmapViewOfFile;

 CloseHandle((HANDLE)4);

 }

 __asm

 {

 lea eax, buf

 push 0

 push 0

 push eax

 push ExitProcess

 push module

 push DeleteFile

 push fnFreeOrUnmap

 ret

 }

}


Информация о работе «Как сделать чтобы запущеный exe сам себя удалил?»
Раздел: Информатика, программирование
Количество знаков с пробелами: 1996
Количество таблиц: 4
Количество изображений: 0

Похожие работы

Скачать
112108
40
5

... исключающего ИЛИ двух операндов. Результат операции помещается в первый операнд. Эту операцию удобно использовать для инвертирования или сравнения определенных битов операндов.2.   Структура и выполнение EXE-файла.   EXE-модуль, созданный компоновщиком, состоит из следующих двух частей: 1) заголовок - запись, содержащая информацию по управлению и настройке программы и 2) собственно загрузочный ...

Скачать
61538
2
0

... для вирусов) действия. Разумеется, антивирусные программы надо применять наряду с регулярным резервированием данных и использованием профилактических мер, позволяющих уменьшить вероятность заражения вирусом. Виды антивирусных программ. Антивирусные программы можно разделить на виды в соответствии с выполняемыми ими функциями. Детекторы. Программы-детекторы позволяют обнаруживать файлы, ...

Скачать
27060
2
0

... , в том числе вирусов и "червей", дело обстоит похуже: если сканеры McAfee и Norton задерживают соответственно 99% и 95% "троянцев", то AVG - всего 23,5%, что вряд ли можно считать достаточной защитой. Кроме того, троянские программы не включаются в список WildList, отчего за ними труднее следить. Наконец, очень желательно, чтобы антивирусный сканер не поднимал ложную тревогу, подозревая в наличии ...

Скачать
175379
2
5

... в Win32 позволила реализовать так называемые многопотоковые приложения (multithread application). При этом выделяют два новых понятия — процесс (proccess) и поток (thread). Процессы в Win32 API примерно эквивалентны приложениям в Windows API. Для каждого процесса выделяются определенные системные ресурсы — адресное пространство, приоритеты и права доступа к разделяемым ресурсам и прочее, но не ...

0 комментариев


Наверх