Heim >类库下载 >C#类库 >Lassen Sie uns über die Methode der Selbstlöschung nach dem Ausführen des Programms sprechen (C++-Quellcode).

Lassen Sie uns über die Methode der Selbstlöschung nach dem Ausführen des Programms sprechen (C++-Quellcode).

巴扎黑
巴扎黑Original
2016-12-20 14:44:342538Durchsuche

JohnChen analysierte ein von Gary Nebbett geschriebenes selbstlöschendes Programm. Es handelt sich um einen sehr subtilen Code. Der Trick besteht darin, dass der Prozess noch vorhanden ist, die ausführbare Datei jedoch gelöscht wurde.

Ich habe vor einiger Zeit auch einen Code zum Selbstlöschen geschrieben, aber dieser war noch nicht so weit fortgeschritten. Ich habe einfach die Stapelverarbeitungsfunktion verwendet und meine Funktion am Ende des Programms aufgerufen, um mich selbst zu löschen. Veröffentlichen Sie nun den Funktionscode.

void SelfDelete()
{
static char templ[] =
":Repeatrn"
"del "%s"rn"
"if exist "%s " goto Repeatrn"
"rmdir %s rn"
"del "%s"" ;
static const char tempbatname[] = "_uninsep.bat" ;

char modulename[MAX_PATH ] ;
char temppath[MAX_PATH] ;
char Ordner[MAX_PATH] ;

GetTempPath(MAX_PATH, temppath) ;
strcat(temppath, tempbatname) ;

GetModuleFileName (NULL, modulename, MAX_PATH) ;
strcpy (folder, modulename) ;
char *pb = strrchr(folder, '\');
if (pb != NULL)
*pb = 0 ;

HANDLE hf ;

hf = CreateFile(temppath, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL) ;

if (hf != INVALID_HANDLE_VALUE)
{
DWORD len ;
char *bat ;

bat = (char*)alloca(strlen(templ) +
strlen(modulename) * 2 + strlen( temppath) + 20) ;

wsprintf(bat, templ, modulename, modulename, Folder, temppath) ;

WriteFile(hf, bat, strlen(bat), &len, NULL) ;
CloseHandle(hf) ;

ShellExecute(NULL, "open", temppath, NULL, NULL, SW_HIDE);
}
}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn