Вирусы и средства борьбы с ними

       

Принятые обозначения


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

Исходя из сказанного, состояние некой вычислительной системы с точки зрения выполняющейся программы, может быть описано как набор доступных программе данных и других программ, что может быть выражено как наборы или последовательности натуральных чисел. Действие любой программы заключается в том, чтобы из одного набора данных и программ получить другой набор данных и программ.

Ниже везде неявно подразумевается описанная интерпретация вычислительной системы.

  1. Обозначим S - множество всех конечных последовательностей натуральных чисел,
    . Таким образом элемент S может обозначать либо набор файлов данных, либо набор файлов программ, закодированных при помощи натуральных чисел.
  2. Обозначим e - вычислимую инъективную функцию из S?S на
    с вычислимой обратной функцией,
    . По тому же принципу, что и программы и данные, натуральными числами могут кодироваться и состояния системы. Функция e взаимно однозначно ставит в соответствие набору данных и программ натуральное число. Иными словами e - однозначная нумерация состояний системы.
  3. Нотация

    предназначена для обозначения состояния системы и фактически является кодом этого состояния, представленным натуральным числом.
  4. Для всех частичных функций
    Любая программа переводит систему из одного состояния в другое, учитывая, что состояния кодируются натуральными числами, можно считать любую программу функцией из
    в
    .
  5. Для всех частичных функций
    примем обозначение f(n)
    тттк f(n) определена
  6. Для всех частичных функций
    примем обозначение f(n)
    тттк f(n) не определена
Определение 2.26. Для всех частичных функций
тттк выполняется одно из условий:
  1. f(s,t)
    и g(s,t)
    , либо
  2. f(s,t)
    и g(s,t)
    и f(s,t) = g(s,t)


Определение служит для уточнения понятия тождественности программ, представленных в виде частичных функций.

Определение 2.27.
для всех частичных функций : тттк:


  1. z=z', и
  2. p=p', и
  3. , и
  4. либо
    • q=q', либо
    • h(qi)
      и h(qi)=q'i




Если раньше для обозначения действия программы на систему использовались коды состояний, то в этом определении используется детализированное описание состояния и по сути вводится отношение между чистым и зараженным состоянием системы. Зараженное состояние характеризуется тем, что при прочих равных в нем некоторые программы изменены вирусом (функция h).

Определение 2.28. Для всех частичных функций
,
тттк
, и


В этом определении уточняется введенное ранее отношение для состояний, получаемых в результате действия двух функций. Результатом действия функции f на состояние системы
является натуральное число, которое можно однозначно интерпретировать как новое состояние
. Точно так же
. Соответственно, запись
обозначает, что обе программы завершают свою работу при запуске из состояния
и результат их выполнения будет отличаться фактом заражения некоторых программ:
.

Определение 2.29. Для всех частичных функций
,
тттк
или


Введенное обозначение призвано отразить тот факт, что зараженная программа не всегда выполняет заражение - в некоторых состояниях зараженная программа может выполнять ровно те же действия, что и незараженная, т. е. результат ее действия при некоторых состояниях системы будут точно таким же как и у незараженной программы.

Определение 2.30. Для всех геделевских нумераций частичных рекурсивных функций
, общерекурсивная функция v будет вирусом по отношению к
тттк
выполняется либо:
  1. Повреждение:
  2. Заражение или имитация:


В данном определении выбор переменных d и p в явном виде указывает на их природу - данные (информация не подверженная заражению) и программы (информация подверженная заражению).

Здесь необходимы комментарии:

  • Повреждение. Из определения следует, что результат действия зараженной программы при определенном состоянии системы определяется только типом вируса и состоянием системы, независимо от того, какая программа была заражена.На самом деле, выполняемое вирусом действие может и не быть деструктивным, важно то, что оригинальная программа не выполняется вовсе, т. е. выполняется функция прописанная в самом вирусе.
  • Заражение или имитация. Здесь, согласно определению, ситуация прямо противоположная. Результат действия зараженной программы либо вовсе не отличается от результата действия исходной, либо отличается появлением в системе новых зараженных программ. Различное поведение определяется различиями в исходном состоянии системы.



Содержание раздела