1 / 3
文档名称:

运行中程序删除自己的方法.doc

格式:doc   大小:89KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

运行中程序删除自己的方法.doc

上传人:uxfx5r418 2017/4/15 文件大小:89 KB

下载得到文件列表

运行中程序删除自己的方法.doc

相关文档

文档介绍

文档介绍:运行中程序删除自己的方法大家都知道, 一般的程序运行的时候, 可执行文件本身是被操作系统保护的, 不能用改写的方式访问, 更别提在本身还在运行的时侯删除自己了。在网上看到一种 UNDOCUMENT 的方法,通过改变系统底层的文件访问模式实现删除自己。但是有没有一种用在 MSDN 上就能查到的函数实现呢?答案是肯定的。下面请看一个范例: Module name: Written by: Jeffrey Richter Description: Allows an EXEcutable file to delete itself **************************************************/ #include #include #include ///////////////////////////////////////////////// int WINAPI WinMain(HINSTANCE h, HINSTANCE b, LPSTR psz, int n){ // Is this the Original EXE or the clone EXE? // If mand-line 1 argument, this is the Original EXE // If mand-line >1 argument, this is the clone EXE if (__argc == 1){ // Original EXE: Spawn clone EXE to delete this EXE // Copy this EXEcutable image into the user''s temp directory TCHAR szPathOrig[_MAX_PATH], szPathClone[_MAX_PATH]; GetModuleFileName(NULL, szPathOrig, _MAX_PATH); GetTempPath(_MAX_PATH, szPathClone); GetTempFileName(szPathClone, __TEXT("Del"), 0, szPathClone); CopyFile(szPathOrig, szPathClone, FALSE); //*** 注意了***: // Open the clone EXE using FILE_FLAG_DELETE_ON_CLOSE HANDLE hfile = CreateFile(szPathClone, 0, FILE_SHARE_READ, NULL, OPEN_EXISTI NG, FILE_FLAG_DELETE_ON_CLOSE, NULL); // Spawn the clone EXE passing it our EXE''s process handle // and the full path name to the Original EXE file. TCHAR szCmdLine[512]; HANDLE hProcessOrig = OpenProcess(SYNCHRONIZE, TRUE, GetCurrentProcessId())