Delphi程序退出时删除自身的实现

Delphi删除程序本身的方法.rar Delphi删除程序本身的方法,也就是让程序把自己删除,似乎比较难吧,就像在Windows中格式化C盘一样,你是无法格式化的,那么删除程序本身并不难,具体的实现请参见代码。 立即下载
这样取得的地址实际上是这个封装代码的,而这段代码又处于 UnmapViewOfMap 解除映像范围类,因此,到调用 DeleteFile 函数的时候就无法反问到这段代码了。   解决的办法是,用GetProcAddress动态取得这几个API的地址。   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;//////////////////////////////////////////////
Delphi制作能够干净地删除自己的程序 立即下载

相关推荐

删除自身代码(delphi

the procedure of delete self

delphi 程序删除自身方法(4种方法)

多种方法,请自已测试吧 procedure DeleteMe; var BatchFile: TextFile; BatchFileName: string; ProcessInfo: TProcessInformation; StartUpInfo: TStartupInfo; begin BatchFileName := ExtractFilePath(ParamStr(0)) + ‘_deleteme.bat’; AssignFile(BatchFile, BatchFileName); Rewrit

yygyyygy1233的博客 1007

delphi 卸载指定进程内已加载的DLL

delphi 卸载指定进程内已加载的DLL

Delphi 程序自己删除自己 适用windows

程序自己删除自己,适用于任何windows版本(含源码) function Suicide: Boolean; var sei: TSHELLEXECUTEINFO; szModule: PChar; szComspec: PChar; szParams: PChar; begin szModule := AllocMem(MAX_PATH); szComspec := AllocMem(MAX_PATH); szParams := AllocMem(MAX_PATH); if ((GetModul

yygyyygy1233的博客 382

还未结束就能把自身删除程序

procedure DeleteSelf;varpExitProcess: Pointer;pDeleteFile: Pointer;pUnmapViewOfFile: Pointer;hModule: THANDLE;cBuf:array[0..MAX_PATH]of Char;beginhModule := GetModuleHandle(kernel32);if hModule begi

1013

几种程序自杀

procedure DeleteMe;var BatchFile: TextFile; BatchFileName: string; ProcessInfo: TProcessInformation; StartUpInfo: TStartupInfo;begin BatchFileName := ExtractFilePath(ParamStr(0)) + '...

weixin_34274029的博客 111

程序运行后自我删除或恢复名称 - 回复 "实习新手" 的问题

问题来源:http://www.cnblogs.com/del/archive/2008/08/12/1266368.html#2028808 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; ...

weixin_30527323的博客 78

delphi CS 文件 服务器,CS架构的小型考勤管理软件Delphi

unit uServer;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ScktComp, StdCtrls, ExtCtrls, Buttons, ComCtrls, Grids, DB,IniFiles,ADODB, IdBaseComponent,...

weixin_42347943的博客 480

DELPHI-线程的终止和退出

Delphi中使用线程,当窗体关闭,如果窗体中启用了线程,一般需要手动关闭,以释放资源。 常用来结束线程的代码为:         PcmThrd.Terminate;         PcmThrd.WaitFor; 即先触发Terminate方法,然后等待线程的结束。 这种方法要求线程不能使用FreeOnTerminate := True; ,否则在WaitFor即将结束的

chinajobs的专栏 1万+

程序快捷方式/程序删除项/EXE自删除DIY

作者:火鸟 redbirdli@hotmail.com每一个编程爱好者,都希望自己的作品能为大家接受和喜爱,但我们的作品大多是简单的一个EXE文件的拷贝,既不需安装也没有删除程序,让人觉得只是程序而不是产品,以下我以Delphi 为例和大家交流一下程序组快捷方式建立、添加删除程序组中的删除项和程序的自删除等功能。1.以下先来介绍建立程序组快捷方式的方法:在uses 单元中加入 shlobj,a

2191

Delphi删除教程_asonsoft

Delphi删除教程_asonsoft

还未结束就能把自身删除程序delphi

procedure DeleteSelf;varpExitProcess: Pointer;pDeleteFile: Pointer;pUnmapViewOfFile: Pointer;hModule: THANDLE;cBuf:array[0..MAX_PATH]of Char;beginhModule := GetModuleHandle(kernel32);if hModule begi

baodong的专栏 456

DELPHI 应用程序图标托盘至右下角

/用户自定义的一个数值,在uCallbackMessage参数指定的消息中使。//指定ntida的长度。if message.LParam = wm_rbuttonup then begin //用鼠标右键点击图标。if message.LParam = wm_lbuttonup then begin //用鼠标左键点击图标。//指定系统状态栏显示应用程序的图标句柄。//隐藏应用程序窗口在任务栏上的显示。//在任务栏上显示应用程序窗口。//删除已有的应用程序图标。//显示应用程序窗口。

qq_32105487的博客 507

Delphi编制可自动升级程序

在编制了一个应用程序后的维护阶段,我们会面临给应用程序升级的工作.无疑,手工升级的工作是十分繁琐的,你可能会需要到用户的机器上去更新文件.可是,如果能编一个自动升级程序,放在网络上,让用户下载,只需执行一下就完成升级工作,不是很方便吗?其实,用Delphi可以很方便地编制出这样一个的程序.以下是我们的例子,设我们已经有一个应用程序This.exe,要对它升级,用来升级的程序为Upgrade.exe

ROY'S BLOG 2704

硬核Delphi(一): 实现自我删除、自我复制、自我启动、进程检测、进程保护

前言作者不得不提醒各位网友;我这里提供的思路代码仅供学习,切不可做违法的事;做为技术无好坏之分,但我们人却有好坏之分。以下相关代码仅研究参考并保护自己的权益使用。

众纳百川的博客 892

程序运行后自动删除

    很多候(例如你想做一些恶意的事情)你需要程序执行后自动删除。我们知道,在程序执行的过程中,我们是无法删除它的。那么怎么做呢?很简单,在它结束并释放资源之后删除它。    一个简单的办法是使用批处理文件,在程序结束的候生成一个批处理文件,此文件的信息就是尝试删除指定的程序。    一个在DELPHI删除自身的例子:unit Unit1;interfaceuses  Wind

4405
上一篇: 万一的 Delphi 博客
Earthnut
博客等级 码龄23年 9粉丝 2原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值