程序如何删除自身

两种方法:

1、借助于 bat 文件。在准备删除自身时,写一下 bat 文件,将执行它,执行后,立刻终止程序运行,文件中要有 删除程序 的语句

del 程序名.exe

在最后,加上 del %0% 这一句的意思是,将 bat 文件删除。

2、是借助下面的语句,可以将程序自身删除。

注意:里面要用到 shellapi 。

Delphi&CB代码如下:


//////////////////////////////////////////////
procedure DeleteSelf;
var
   pExitProcess: Pointer;
   pDeleteFile: Pointer;
   pUnmapViewOfFile: Pointer;
   hModule: THANDLE;
   cBuf:array[0..MAX_PATH]of Char;
begin
   hModule := GetModuleHandle('kernel32');
   if hModule <> 0 then
   begin
     pExitProcess := GetProcAddress(hModule, 'ExitProcess');
     pDeleteFile := GetProcAddress(hModule, 'DeleteFileA');
     pUnmapViewOfFile := GetProcAddress(hModule, 'UnmapViewOfFile');
   end else
   begin
     pExitProcess := nil;
     pDeleteFile := nil;
     pUnmapViewOfFile := nil;
   end; 
   hModule := GetModuleHandle(nil);
   GetModuleFileName(hModule, cBuf, Sizeof(cBuf));
   CloseHandle(THANDLE(4));
   asm
     XOR EAX, EAX;
     PUSH EAX;
     PUSH EAX;
     LEA EAX, cBuf;
     PUSH EAX;
     MOV EAX, pExitProcess;
     PUSH EAX;
     MOV EAX, hModule;
     PUSH EAX;
     MOV EAX, pDeleteFile;
     PUSH EAX;
     MOV EAX, pUnmapViewOfFile;
     PUSH EAX;
     RET;
   end;
end;
//////////////////////////////////////////////



发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 1 = 4