ホームページ >类库下载 >C#クラスライブラリ >プログラム(C++ソースコード)実行後の自己削除方法について説明します。

プログラム(C++ソースコード)実行後の自己削除方法について説明します。

巴扎黑
巴扎黑オリジナル
2016-12-20 14:44:342562ブラウズ

JohnChen は、Gary Nebbett が作成した自己削除プログラムを分析しました。これは非常に微妙なコードですが、プロセスはまだ存在していますが、実行可能ファイルは削除されています。

私も少し前に自己削除コードを書きましたが、それほど高度なものではなく、バッチ処理関数を使用して、プログラムの最後に自分の関数を呼び出して自分自身を削除しました。次に関数コードを投稿します。

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

char モジュール名[MAX_PATH] ;
char temppath[MAX_PATH] ;
char フォルダ[MAX_PATH] ;

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

GetModuleFileName(NULL, modulename, MAX_PATH) ;
strcpy (フォルダー, モジュール名) ;
char *pb = strrchr(フォルダー, '\');
if (pb != NULL)
*pb = 0;

HANDLE hf
DWORD len ;
char *bat ;

bat = (char*)alloca(strlen(templ) +
strlen(モジュール名) * 2 + strlen(temppath) + 20) ;

wsprintf(bat, templ, modulename, modulename, フォルダー, temppath) ;

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

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



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。