Компьютерные вирусы

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 12.08.2011
Размер файла 43,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

27

Размещено на http://www.allbest.ru/

КОНТРОЛЬНАЯ РАБОТА

ПО ДИСЦИПЛИНЕ

«Вычислительные системы, сети и телекоммуникации»

Содержание

  • ЗАДАНИЕ 1 Компьютерные вирусы 3
  • ЗАДАНИЕ 2 Установка сторожа на COM-программу и его удаление 13
  • СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 27
  • ЗАДАНИЕ 1 Компьютерные вирусы

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

С развитием и совершенствованием аппаратно-программных комплексов персональных компьютерных систем в добавление к существовавшим ранее проблемам появилась новая не менее опасная и серьезная проблема и явление, напрямую связанная с безопасностью компьютерных систем - компьютерные вирусы. Что же такое вирус, какие бывают вирусы, откуда они берутся, зачем и как работают, к чему может привести их существование и как избежать нежелательных последствий воздействия? - такие вопросы волнуют сейчас тысячи людей, работа и отдых которых, так или иначе, зависит от правильного функционирования компьютеров. Попробуем в сжатой форме ответить на эти вопросы. Что такое компьютерный вирус? В настоящее время проблема компьютерных вирусов перестала быть лишь неким локальным конфликтом программистов-вредителей и всего остального мира пользователей персональных компьютеров (ПК). Сейчас это явление, объединяющее множество совершенно различных форм и видов, постоянно пополняющееся различными фактами конкретного воплощения и реализующееся на различных платформах, разных операционных системах (ОС) и программных продуктах. Не так давно, в середине 80-х, на вопрос "что такое компьютерный вирус?" можно было бы ответить так: это такая программа, которая работает на вашем компьютере без вашего ведома, самостоятельно распространяется и "размножается" - осуществляет тиражирование собственного кода, и, возможно осуществляет некоторые неприятные или вредные действия. С этого все начиналось. Сейчас это явление можно охарактеризовать как искусственно созданный вредный код, самостоятельно распространяющийся и осуществляющий собственное тиражирование - "размножающийся". В понятие код входит не только возможный программный код, состоящий из инструкций центральному процессору, но и код на любом языке программирования, макросы в системах автоматического управления, код в системах связи, сетевых ресурсах и, вообще, любой алгоритм, который может быть выполнен автоматически без участия человека. Данная проблема восходит к проблемам безопасности автоматических систем и систем автоматического управления. Дело в том, что если такая система (например любая однопользовательская ОС типа DOS и Windows 95) допускает автоматическое выполнение некоторого кода, и возможность его самораспространения - размножения, то имеется возможность создания такой программы, которая, используя данные особенности системы управления процессами - ОС, будет работать безконтрольно, со всеми возможными последствиями для системы. Какие бывают компьютерные вирусы? В настоящее время, имеется достаточно много точек зрения на проблему вирусов, а значит и их классификаций. Остановимся на нескольких наиболее значимых.

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

o По характеру распространения и заражения различают вирусы: заражающие программный код и паразитирующие на отдельных структурах данных специализированного ПО.

o По характеру воздействия на систему различают индифферентные, раздражающие, вредные и разрушительные вирусы.

Конкретные реализации для некоторых ОС типа MS-DOS и Windows 3.x/4.x приводят к интерпретации вышесказанного следующим образом. Так для этих ОС характер кода вирусов может быть таковым, что он заражает:

o выполнимые файлы - файлы программ exe, com, sys, bin, lib, ovl…;

o управляющие структуры накопителей информации содержащие автоматически выполняемый программный код - Master Boot Record, Boot;

o файлы содержащие специфический текстовый (не двоичный процессорный) программный код - пакетные файлы (bat), документы систем автоматически выполняющих макросы (doc, dot, xls, mdb…);

o почтовые сообщения электронной почты Virus warning, на которой размещается MBR. Следует обязательно разрешать (включать) данную проверку, т.к. при попытке вируса, заразившего ОС "закрепиться" в системе и заразить MBR, чтобы постоянно заражать ОС во время загрузки, будет выдаваться предупреждение. И только в случае положительного ответа на предупреждающее сообщение данная структура будет заражена. Зачем и как работают компьютерные вирусы? Под вопросом "зачем" следует понимать непосредственные цели, которые ставились при разработке вируса и его принципиальные потенциальные возможности. Программистов, пишущих вирусы можно разделить на злых квалифицированных шутников, дурачащихся над неотесанными пользователями и профессиональных подрывников, разрабатывающих вирусы под конкретную задачу, суть которой, как правило, сводиться к срыву работы компьютерных систем. В связи с такой классификацией можно разделить вирусы на программы - злые шутки, тренировочные, тестовые, мощные, но безоружные вирусы и вирусы разрушители.

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

Необходимо отметить, что безвредных вирусов нет. Само существование и размножение некоторого программного кода оказывает, как минимум, три вредных воздействия:

§ замедляет работу системы,

§ засоряют накопители и ОЗУ ненужной информацией

§ и повышают риск сбоев в системе из-за непредусмотренного вмешательства в ее работу.

Любой вирус, для начала его работы и процесса автовоспроизведения должен заразить систему автоматического управления - ОС, или ПО, под управлением которой будет выполняться код вируса. Например, файловые и бутовые вирусы, заражающие код выполнимых файлов, должны заразить ОС в оперативной памяти (ОЗУ), и лишь после этого они могут начать размножение и вредные действия.

Макро-вирусы, заражающие документы с автоматическим выполнением макросов, должны заразить систему в которой производится подготовка таких документов (в случае с MS-Word это осуществляется путем заражения основного шаблона системы - файла normal.dot как обыкновенного документа).

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

Для ПК, работающего под управлением однопользовательских одноранговых ОС типа MS-DOS или MS-Windows 95 наиболее опасными являются файловые, бутовые и смешанные вирусы. Файловые вирусы переносятся вместе с содержимым файлов, заражают их путем дописывания в начало конец или средину файла программного модуля и активируются только при выполнении данного файла. Такие вирусы, в основном, являются кодами реального режима с инструкциями процессора 80х86 и при работе в защищенном режиме бездействуют.

Однако, в последнее время участились случаи встречи с вирусами, которые все больше используют возможности защищенного режима и доступа к расширенной памяти. Такие вирусы будут активны и под управлением ОС в защищенном режиме (например в среде графического интерфейса MS-Windows 95).

При запуске зараженного файла сначала стартует не код программы, а код тела вируса, который обеспечивает его локализацию в ОЗУ - ее заражение и возможность дальнейшей активации посредством механизма перехвата векторов прерываний в реальном режиме. Напомним, что в реальном режиме работы центрального процессора первый килобайт ОЗУ занимают 256 четырехбайтовых элементов, представляющих собой дальние адреса (указатели) на точки входа в различные процедуры, как ОС, так и BIOS. Данные процедуры носят названия обработчики прерываний. Под "программным прерыванием" понимается событие, состоящее в передаче управления по адресу точки входа, записанному в каком-либо из 256-ти векторов прерываний. Для его осуществления существует специальная отдельная инструкция центрального процессора.

Механизм перехвата вектора прерывания состоит в записи в таблицу векторов прерывания вместо первичного адреса точки входа в процедуру обработчика прерывания, нового адреса, указывающего на новую процедуру, которая возможно будет в последующем вызывать старую, для чего адрес старой процедуры - первичный вектор также сохраняется. Весь фокус состоит в том, что каждое прерывание служит для определенной обработки того или иного события (обращение к сопроцессору, обработка запроса на выполнение дисковой операции, обработка изменения системного времени - системные часы, вызов графической подсистемы BIOS и т.п.). К большинству процедур обращение производится тысячи раз в секунду. Поэтому, если некий программный код изменил значение вектора прерывания, указав в качестве точки входа свое тело, то он будет активироваться достаточно часто и в тот момент, когда ему нужно. На механизме векторов прерываний построена вся система взаимодействия выполняющихся в реальном режиме инструкций центрального процессора с программным кодом ОС, BIOS и резидентных в памяти процессов. В этом смысле вирус является несанкционированной резидентной программой управляемой посредством механизма перехвата векторов прерываний. После заражения ОЗУ вирус передает управление истинному коду программы и она выполняется как обычно.

После этого основной задачей вируса является размножение. Он конечно перехватывает все жизненно важные для ОС прерывания и таким образом всегда "знает", что делает система. На данном этапе его интересуют файловые операции. На стадии выполнения файловой операции, например, копирования, или запуска файла, вирус может заразить запускаемый или копируемый файл, а также, структуры носителя, с которым выполняются файловые операции. Если вирус является бутовым или смешанным, то после заражения ОЗУ, или сразу перед ним, производится попытка заражения дискового носителя, путем записи в загрузочные сектора собственного кода. Этот код может быть активирован - "оживет" лишь при загрузке с зараженного носителя.

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

В зависимости от степени сложности вируса и от изощренности и квалификации его автора, файловые вирусы могут быть достаточно интеллектуальными и принимать меры против их обнаружения. Так например, в зараженной системе у зараженных файлов якобы не изменяется длина, что затрудняет обнаружение заражения по размеру файла. Однако, безотказно действую ревизоры, рассчитывающие и сверяющие контрольные суммы файлов. Известный бутовый вирус под названием "One half" отслеживает чтение нулевой дорожки и показывает не истинное, а первозданное ее содержимое (нули), что затрудняет его обнаружение путем сличения при работе на зараженной системе (однако, запись некоторой сигнатуры - ненулевых повторяющихся значений помогает легко определить текущее состояние). Какие могут быть последствия воздействия вирусов? Как не странно покажется на первый взгляд, обычно, последствия воздействия вирусов выходят далеко за рамки ожидаемых их создателями результатов. Прежде всего, это связано с тем, что ни один программист, даже вирусописатель, не застрахован от ошибок в коде. Ошибки становятся ошибками вдвойне, если это ошибки в коде вируса. В лучшем случае, они приводят к досрочному обнаружению вируса или к его самоуничтожению путем, например, повторного заражения. Однако, более серьезные для системы проблемы кроются в повреждении программ, данных и управляющих структур файловой системы носителей информации (как правило дисковых). Такие повреждения могут быть произведены как в результате неуспешной попытки заражения, так и в результате преднамеренного вредительства. В любом случае, классифицировать повреждения можно на три категории - повреждения файлов, управляющих структур и смешанные. Очевидно понятно, что серьезность повреждения файла зависит от типа файла и важности или уникальности байтов его информации. В случае повреждения, например, двоичных (нередактируемых простым способом) файлов, представляющих некоторые команды и данные их ручное восстановление практически невозможно (если Вы конечно не пишете в двоичном коде на ассемблере как компилятор или линкер - в таком случае мне хотелось бы с Вами познакомиться).

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

Повреждения в структуре файловой системы гораздо опаснее прозаических повреждений отдельных файлов. Так, преднамеренное повреждение таблицы распределения файлов (FAT) может привести к накоплению перекрестных ссылок, что в конце концов, приведет к потере всей информации файлов и каталогов и к полному краху системы. Не требуется долго объяснять тот факт, что повреждения в структуре загрузчика, загрузочных секторов, таблиц разделов или загрузочной записи, как правило, приводит, как минимум, к невозможности грузиться с поврежденного носителя, а максимум - к полной потере всей информации всех логических дисков накопителя.

Более мелкие и незначительные, но все же обидные повреждения и потери можно понести в результате заражения макровирусами или сетевыми вирусами. Хотя среди них встречаются и редкостные вредители, форматирующие накопители и стирающие все, что можно стереть на уровне доступа к локальной файловой системе. Косвенно, к последствиям воздействия вирусов можно отнести и возможное замедление работы системы, и странное ее поведение, и нарушение привычного рабочего цикла по причине отказа ряда программных продуктов, и финансовые потери, связанные со временем, требующимся на восстановление испорченной информации или переустановки системы, или ее переконфигурирования и переустановки ряда программных продуктов.

Типичным заблуждением является мнение, что вирус может нанести урон не только программному обеспечению, но и аппаратной части. Ни один вирус не может в достаточной степени повлиять на обычную встроенную и периферийную аппаратуру (дисковые накопители, мониторы, видео и звуковые карты, принтеры, сканеры, манипуляторы, материнские платы и т.п.), чтобы привести к разрушительным последствиям.

Как бороться с вирусами и противостоять их атаке? Основным правилом при пользовании систем подверженных заражению вирусами являются правила профилактики или гигиены. Гораздо проще не допустить заражения, нежели искать эффективные пути обезвреживания неизвестного паразита. Основными моментами при профилактике вирусов ОС типа MS-DOS и Windows 95 является эксплуатация с соблюдением следующих норм:

§ никогда не загружайте компьютер с непроверенного носителя, из чего следует, что параметр загрузки в процедуре Setup в BIOS в норме должен исключать возможность загрузки с дискеты (А:, В:); -

§ никогда не запускайте новых программ, не проверив их всеми имеющимися подручными антивирусными тестирующими средствами;

§ старайтесь не использовать программы, взятые из непроверенных источников;

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

§ Элементарной проверкой на возможность заражения макровирусом файлов системы MS-Word может быть поиск в фале документа макроса по имени AutoExec - это макрос, стартующий сразу после открытия документа. В норме, обычные документы его не содержат.

§ при подозрении на эпидемию (циклическом заражении всех компьютеров) необходимо, после загрузки с "чистой" дискеты и тестирования установить резидентный монитор (хотя бы MSAV или ADINF и пользоваться ими до устойчивого долговременного исчезновения проявлений вирусов);

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

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

§ - завершить работу с системой и перегрузиться холодной загрузкой - кнопкой "RESET" - с заранее подготовленного для такого случая, "чистого" носителя (как правило - с дискеты);

§ запустить c той же дискеты имеющиеся антивирусные программы и проверить все каталоги и файлы, или по крайней мере, те из них, которые автоматически запускаются после старта компьютера;

§ проверить структуру файловой системы встроенными (scandisk) или альтернативными (ndd) средствами;

§ в случае обнаружения бутового или загрузочного вируса - перенести систему с чистого носителя (команда sys);

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

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

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

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

ЗАДАНИЕ 2 Установка сторожа на COM-программу и его удаление

компьютерный вирус атака сторож

После ввода на диск исходной программы под именем EXASM1.ASM необходимо проделать два основных шага, прежде чем программу можно будет выполнить. Сначала необходимо ассемблиpовать программу, а затем выполнить компановку. Программисты на языке бейсик могут выполнить программу сразу после ввода исходного текста, в то время как для ассемблера и компиллярных языков нужны шаги трансляции и компановки.

Шаг ассемблирования включает в себя трансляцию исходного кода в машинный объектный код и генерацию OBJ-модуля. Вы уже встречали примеры машинного кода в главе 2 и примеры исxодного текста в этой главе.

OBJ-модуль уже более приближен к исполнительной форме, но еще не готов к выполнению. Шаг компановки включает преобразование OBJ-модуля в EXE (исполнимый) модуль, содержащий машинный код. Программа LINK, находящаяся на диске DOS, выполняет следующее: 1. Завершает формирование в OBJ-модуле адресов, которые остались неопределенными после ассемблирования. Во многих следующих программах такие адреса ассемблер отмечает как -R. 2. Компанует, если необходимо, более одного отдельно ассемблированного модуля в одну загрузочную (выполнимую) программу; возможно две или более ассемблерных программ или ассемблерную программу с программами, написанными на языках высокого уровня, таких как Паскаль или Бейсик. 3. Инициализирует EXE-модуль командами загрузки для выполнения.

После компановки OBJ-модуля (одного или более) в EXE-модуль, можно выполнить EXE-модуль любое число раз. Но, если необходимо внести некоторые изменения в EXE-модуль, следует скорректировать исходную программу, ассемблировать ее в другой OBJ-модуль и выполнить компановку OBJ-модуля в Ассемблер для IBM PC.

АССЕМБЛИРОВАНИЕ ПРОГРАММЫ

Для того, чтобы выполнить исходную ассемблерную программу, необходимо прежде провести ее ассемблирование и затем компановку. На дискете с ассемблерным пакетом имеются две версии aссемблера. ASM.EXE - сокращенная версия с отсутстви ем некоторых незначительных возможностей и MASM.EXE - полная версия. Если размеры памяти позволяют, то используйте версию MASM (подробности см. в соответствующем руководстве по ассемблеру). Для ассемблирования, вставте ассемблерную дискету в дисковод A, а дискету с исходной программой в дисковод B. Кто имеет винчестер могут использовать в следующих примеpах C вместо A и B. Простейший вариант вызова программы это ввод команды MASM (или ASM), что приведет к загрузке программы ассемблера с диска в память. На экране появится: source filename [.ASM]: object filename [filename.OBJ]: source listing [NUL.LST]: cross-reference [NUL.CRF]: Курсор при этом расположится в конце первой строки, где необходимо указать имя файла. Введите номер дисковода (если он не определен умолчанием) и имя файла в следующем виде: B:EXASM1. Не следует набирать тип файла ASM, так как ассем блер подразумевает это. Во-втором запросе предполагается аналогичное имя файла (но можно его заменить). Если необходимо, введите номер дисковода B:. Третий запрос предполагает, что листинг ассемблирования программы не требуется. Для получения листинга на дисководе B наберите B: и нажмите Return. Последний запрос предполагает, что листинг перекрестных cсылок не требуется. Для получения листинга на дисководе B, наберите B: и нажмите Return. Если вы хотите оставить значения по умолчанию, то в трех последних запросах просто нажмите Return. Ниже приведен пример запросов и ответов, в результате которых ассемблер должен cоздать OBJ, LST и CRF-файлы. Введите ответы так, как показано, за исключением того, что номер дисковода может быть иной. source filename [.ASM]:B:EXASM1 [Return] object filename [filename.OBJ]:B: [Return] source listing [NUL.LST]:B: [Return] cross-reference [NUL.CRF]:B: [Return] Всегда необходимо вводить имя исходного файла и, обычно, запрашивать OBJ-файл - это требуется для компановки программы в загрузочный файл. Возможно потребуется указание LST-файла, особенно, если необходимо проверить сгенерирован ный машинный код. CRF-файл полезен для очень больших программ, где необходимо видеть, какие команды ссылаются на какие поля данных. Кроме того, ассемблер генерирует в LST-файле номера строк, которые используются в CRF-файле. Ассемблер преобразует исходные команды в машинный код и выдает на экран сообщения о возможных ошибках. Типичными ошибками являются нарушения ассемблерных соглашений по именам, неправильное написание команд (например, MOVE вместо MOV), а также наличие в опеpандах неопределенных имен. Программа ASM выдает только коды ошибок, которые объяснены в руководстве по ассемблеру, в то время как программа МASM выдает и коды ошибок, и пояснения к ним. Всего имеется около 100 сообщений об ошибках. Ассемблер делает попытки скорректировать некоторые ошибки, но в любом случае следует перезагрузить текстовый редактор, исправить исходную программу (EXASM1.ASM) и повторить ассемблирование. На рис. 4.1. показан листинг, полученный в результате асcемблирования программы и записанный на диск под именем EXASM1.LST. В начале листинга обратите внимание на реакцию ассемблера на директивы PAGE и TITLE. Никакие директивы, включая SEGMENT, PROC, ASSUME и END не генерируют машинных кодов. Листинг содержит не только исходный текст, но также слева транслированный машинный код в шестнадцатиричном формате. В самой левой колонке находится шест.адреса команд и данных. Сегмент стека начинается с относительного адреса 0000. В действительности он загружается в память в соответствии с адpесом в регистре SS и нулевым смещением относительно этого адpеса. Директива SEGMENT устанавливает 16-кратный адрес и указывает ассемблеру, что это есть начало стека. Сама директива не генерирует машинный код. Команда DB, также находится по адресу 0000, содержит 12 копий слова 'STACKSEG'; машинный код представлен шест.0C (десятичное 12) и шест. представлением ASCII символов. (В дальнейшем можно использовать отладчик для просмотра результатов в памяти). Сегмент стека заканчивается по адресу шест. 0060, который эквивалентен десятичному значению 96 (12х8).

Сегмент кода также начинается с относительного адреса 0000. Он загружается в память в соответствии с адресом в pегистре CS и нулевым смещением относительно этого адреса. Поскольку ASSUME является директивой ассемблеру, то первая команда, которая генерирует действительный машинный код есть PUSH DS - однобайтовая команда (1E), находящаяся на нулевом смещении. Следующая команда SUB AX,AX генерирует двухбайтовый машинный код (2B C0), начинающийся с относительного адреса 0001. Пробел между байтами только для удобочитаемости. В данном примере встречаются одно-, двух- и трехбайтовые команды. Последняя команда END содержит операнд BEGIN, который имеет отношение к имени команды PROC по смещению 0000. Это есть адрес сегмента кодов, с которого начинается выполнение после загрузки программы. Листинг ассемблирования программы EXASM1.LST, имеет по директиве PAGE ширину 132 символа и может быть распечатан. Многие принтеры могут печатать текст сжатым шрифтом. Включите ваш принтер и введите команду За листингом ассемблирования программы следует таблица идентификаторов. Первая часть таблицы содержит определенные в программе сегменты и группы вместе с их размером в байтах, выравниванием и классом. Вторая часть содержит идентификаторы - имена полей данных в сегменте данных (в нашем примере их нет) и метки, назначенные командам в сегменте кодов (одна в нашем примере). Для того, чтобы ассемблер не создавал эту таблицу, следует указать параметр /N вслед за командой MASM, т.е. MASM/N. В процессе трансляции исходной программы ассемблер делает два просмотра исходного текста, или два прохода. Одной из основных причин этого являются ссылки вперед, что происходит в том случае, когда в некоторой команде кодирует ся метка, значение которой еще не определено ассемблером. В первом проходе ассемблер просматривает всю исходную программу и строит таблицу идентификаторов, используемых в программе, т.е. имен полей данных и меток программы и их относительных aдресов в программе. В первом проходе подчитывается объем объектного кода, но сам объектный код не генерируется. Во втором проходе ассемблер использует таблицу идентификаторов, построенную в первом проходе. Так как теперь уже известны длины и относительные адреса всех полей данных и команд, то ассемблер может сгенерировать объектный код для каждой команды. Ассемблер создает, если требуется, файлы: OBJ, LST и CRF. КОМПАНОВКА ПРОГРАММЫ

Если в результате ассемблирования не обнаружено ошибок, то cледующий шаг - компановка объектного модуля. Файл EXASM1.OBJ содержит только машинный код в шестнадцатеричной форме. Так как программа может загружаться почти в любое место памяти для выполнения, то ассемблер может не определить все машинные адреса. Кроме того, могут использоваться другие (под) программы для объединения с основной. Назначением программы LINK является завершение определения адресных ссылок и объединение (если требуется) нескольких программ. Для компановки ассемблированной программы с дискеты, вставте дискету DOS в дисковод A, а дискету с программой в дисковод B. Пользователи винчестерского диска могут загрузить компановщик LINK прямо с дисковода C. Введите команду LINK и нажмите клавишу Return. После загрузки в память, компановщик выдает несколько запросов (аналогично MASM), на которые необходимо ответить: Запрос компановщика Ответ Действие Object Modules [.OBJ]: B:EXASM1 Компанует EXASM1.OBJ Run file [EXASM1.EXE]: B: Создает EXASM1.EXE List file [NUL.MAP]: CON Создает EXASM1.MAP Libraries [.LIB]: [Return] По умолчанию Первый запрос - запрос имен объектных модулей для компа новки, тип OBJ можно опустить. Второй запрос - запрос имени исполнимого модуля (файла), (по умолчанию A:EXASM1.EXE). Ответ B: требует, чтобы компановщик создал файл на дисководе В. Практика сохранения одного имени (при разных типах) файла упрощает работу с программами. Третий запрос предполагает, что LINK выбирает значение по yмолчанию - NUL.MAP (т.е. MAP отсутствует). MAP-файл содержит таблицу имен и размеров сегментов и ошибки, которые обнаружит LINK. Типичной ошибкой является неправильное определение сегмента стека. Ответ CON предполагает, что таблица будет выведена на экран, вместо записи ее на диск. Это позволяет сэкономить место в дисковой памяти и сразу просмотреть таблицу непосредственно на экране. В нашем примере MAP-файл содержит следующую информацию: Start Stop Length Name 00000H 00015H 0016H CODESG 00020H 0007FH 0060H STACKSG

До сих пор вы писали, ассемблировали и выполняли программы в EXE-формате. Компановщик LINK автоматически генерирует особый формат для EXE-файлов, в котором присутствует специальный начальный блок (заголовок) pазмером не менее 512 байт. (В главе 22 рассматривается содержимое начальных блоков). Для выполнения можно также создавать COM-файлы. Примером часто используемого COM-файла является COMMAND.COM. Программа EXE2BIN.COM в оперативной системе DOS преобразует EXE- файлы в COM-файлы. Фактически эта программа создает BIN (двоичный) файл, поэтому она и называется "преобразователь EXE в Вin (EXE-to-BIN)". Выходной Вin-файл можно переименовать в COM-файл. РАЗЛИЧИЯ МЕЖДУ ПРОГРАММАМИ В EXE и COM-файлах

Несмотря на то, что EXE2BIN преобразует EXE-файл в COM-файл, cуществуют определенные различия между программой, выполняемой как EXE-файл и программой, выполняемой как COM-файл. Размер программы. EXE-программа может иметь любой размер, в то время как COM-файл ограничен размером одного сегмента и не превышает 64К. COM-файл всегда меньше, чем соответствующий EXE-файл; одна из причин этого - отсутствие в COM-файле 512-байтового начального блока EXE-файла. Сегмент стека. В EXE-программе определяется сегмент стека, в то время как COM-программа генерирует стек автоматически. Таким образом при создании ассемблерной программы, которая будет преобразована в COM-файл, стек должен быть опущен. Сегмент данных. В EXE программе обычно определяется сегмент данных, а регистр DS инициализируется адресом этого сегмента. В COM-программе все данные должны быть определены в сегменте кода

Инициализация. EXE-программа записывает нулевое слово в стек и инициализирует регистр DS. Так как COM-программа не имеет ни стека, ни сегмента данных, то эти шаги отсутствуют. Когда COM-программа начинает работать, все сегментные регистры содержат адрес префикса программного сегмента (PSP), - 256-байтового (шест. 100) блока, который резервируется операционной системой DOS непосредственно перед COM или EXE программой в памяти. Так как адресация начинается с шест. смещения 100 от начала PSP, то в программе после оператора SEGMENT кодируется директива ORG 100H. Обработка. Для программ в EXE и COM форматах выполняется ассемблирование для получения OBJ-файла, и компановка для получения EXE-файла. Если программа создается для выполнения как EXE-файл, то ее уже можно выполнить. Если же программа создается для выполнения как COM-файл, то компановщиком будет выдано сообщение: Warning: No STACK Segment (Предупреждение: Сегмент стека не определен) Это сообщение можно игнорировать, так как определение стека в программе не предполагалось. Для преобразования EXE-файла в COM-файл используется программа EXE2BIN. Предположим, что EXE2BIN имеется на дисководе A, а скомпонованный файл по имени CALC.EXE - на дисководе B. Введите EXE2BIN B:CALC,B:CALC.COM Так как первый операнд всегда предполагает EXE файл, то можно не кодировать тип EXE. Второй операнд может иметь другое имя (не CALC.COM). Если не указывать тип COM, то EXE2BIN примет по умолчанию тип BIN, который впоследствии можно переименовать в COM. После того как преобразование будет выполнено можно удалить OBJ- и EXE-файлы. Если исходная программа написана для EXE-формата, то можно, используя редактор, заменить команды в исходном тексте для COM файла.

Размеры EXE- и COM-программ - 788 и 20 байт соответствен но. Учитывая такую эффективность COM-файлов, рекомендуется все небольшие программы создавать для COM-формата. Для трассировки выполнения программы от начала (но не включая) команды RET введите DEBUG B:EXCOM1.COM. Некоторые программисты кодируют элементы данных после команд так, что первая команда JMP не требуется. Кодирование элементов данных перед командами позволяет ускорить процесс ассемблирования и является методикой, рекомендуемой в руководстве по ассемблеру.

Объем COM-файла ограничен 64К. COM-файл меньше, чем соответствующий EXE-файл. Программа, написанная для выполнения в COM-формате не содержит стека и сегмента данных и не требует инициализации регистра DS. Программа, написанная для выполнения в COM-формате использует директиву ORG 100H после директивы SEGMENT для выполнения с адреса после префикса программного сегмента. Программа EXE2BIN преобразует EXE-файл в COM-файл, обусловленный указанием типа COM во втором операнде. Операционная система DOS определяет стек для COM-программы или в конце программы, если позволяет размер, или в конце памяти.

Сторож -- небольшая резидентная программа, постоянно находящаяся в памяти компьютера и контролирующая операции, которые она считает подозрительными. В качестве примера сторожа можно привести VSAFE, входивший в поставку некоторых версий MS-DOS. На наш взгляд, для обычного пользователя программные сторожа довольно бесполезны. Одни и те же операции выполняют и вирусы, и обычные программы. Невозможно даже выделить класс исключительно "вирусных" операций. Вследствие этого сторож либо вынужден ничего не контролировать и пассивно наблюдать за происходящим, либо "звенеть" при каждой подозрительной операции. При этом он так вам надоест, что вы просто отключите его, чтобы не мешал работать. Если уж использовать сторож, то на самом минимальном уровне контроля (например, отслеживая изменение загрузочных секторов). Кстати, такие сторожевые функции имеют некоторые современные BIOS, хотя и с этим все не так просто. Эта функция BIOS может конфликтовать с некоторыми операционными системами, а в некоторых случаях может вообще не работать. Не так давно был популярен еще один класс антивирусных средств - специальные вакцины, которые использовались для обработки файлов и загрузочных секторов. Вакцины бывают пассивными (пример такой вакцины описан ниже) и активными. Активная вакцина, "заражая" файл, подобно вирусу, предохраняет его от любого изменения и в ряде случаев способна не только обнаружить сам факт заражения, но и вылечить файл. Пассивные вакцины использовались (теперь это уже большая редкость) для предотвращения заражения файлов некоторыми вирусами, использующими простые признаки их зараженности -- "странные" время или дата создания, определенные символьные строки и пр. В настоящее время вакцинирование широко не применяется. Бездумное вакцинирование всего и вся способно вызвать целые эпидемии несуществующих вирусных болезней. Так, в течение нескольких лет на территории бывшего СССР свирепствовала страшная эпидемия ужасного вируса TIME. Жертвой этого вируса стали сотни абсолютно здоровых программ, "зарезанных на операционном столе" хирургом ANTI-KOTом. История эта вкратце такова. Имеется довольно много вирусов, предотвращающих повторное заражение файлов некоторой "черной меткой", которую они "навешивают" на программу. Имеются, к примеру, вирусы, выставляющие в поле секунд времени создания файла значение 62. Уже довольно давно появился вирус, который ко всем зараженным файлам дописывал в конец пять байт -- "MsDos". Нормальных файлов, содержащих в конце такую символьную строку, не бывает, поэтому вирус и использовал этот признак как индикатор заражения файла. Вакцинирование файлов против этого вируса совсем не сложно. Достаточно дописать в конец вышеупомянутую символьную строку -- и вирус вам не страшен. Страшно другое -- имеются (точнее, имелись) антивирусные программы (к примеру, ANTI-KOT), которые обманываются так же легко, как и сам вирус. Видя в конце файла злополучную строчку, они немедленно лечат его и умывают руки. Шансов на то, что такой инвалид будет нормально работать, практически никаких. С этим же вирусом (и с этим же антивирусом) связана еще одна история. До сих пор не вышел из употребления другой "мощный" антивирус -- ANTITIME. В отличие от ANTI-KOTа, он не калечит программ, но и не лечит их тоже. Видя в конце файла все ту же строчку, он отрезает ее (сообщая при этом, что в файле найден "страшный TIME", -- утверждение само по себе довольно корректно, поскольку вирусом он его явно не называет). Программа эта, написанная, по всей видимости, как антивакцина, периодически пытается участвовать в конкурсе на лучший антивирус, ибо она также видит "страшный TIME" там, где никакая из нормальных антивирусных программ его не видит.

Сторожа: програм6ы-сторожа (или фильтры) располагаются резидентно в оперативной памяти компьютера и проверяют на наличие вирусов запускаемые файлы и вставляемые в дисковод дискеты. При наличии вируса об этом сообщается пользователю. Кроме того, многие программы-сторожа перехватывают те действия, которые используются вирусами для размножения и нанесения вреда (скажем, попытку записи в загрузочный сектор или форматирование жёсткого диска), и сообщают о них пользователю. Пользователь может разрешить или запретить выполнение соответствующей операции. Программы-сторожа позволяют обнаружить многие вирусы на самой ранней стадии, когда вирус ещё не успел размножиться и что-либо испортить. Тем самым можно свести убытки от вируса к минимуму.

Замечания. 1. Степень защиты, обеспечиваемую программами-сторожами, не следует переоценивать, поскольку некоторые вирусы для своего размножения и нанесения вреда обращаются непосредственно к программам BIOS системы, не используя стандартный способ вызова этих программ через прерывания, а резидентные программы для защиты от вируса перехватывают только эти прерывания.

2. Многие программы-сторожа проверяют перед перезагрузкой, выполняемой по нажатию Ctr Alt Del или по запросу программы, вставленные в дисководы дискеты на наличие загрузочных вирусов. Однако если загрузка осуществляется по нажатию кнопки «Reset» или по включению компьютера, то программы-сторожа ничем помочь не смогут - ведь заражение загрузочным вирусом происходит при загрузке операционной системы, т.е. до запуска любых программ или установки драйверов.

3. Иногда применяются также программы-вакцины, или иммунизаторы, они модифицируют программы и диски таким образом, что это не отражается на роботе программ, но тот вирус, от которого производится вакцинация, считает эти программы или диски уже заражёнными.

pm0.asm

Программа, выполняющая переход в защищенный режим и немедленный возврат.

Работает в DOS в реальном режиме и в DOS-окне Windows 95 (Windows; перехватывает исключения, возникающие при попытке перехода в защищенный; режим из V86, и позволяет нам работать, но только на минимальном уровне; привилегий)

; Компиляция:

; TASM:

; tasm /m pm0.asm

; tlink /x /t pm0.obj

; MASM:

; ml /c pm0.asm

; link pm0.obj,,NUL,,,

; exe2bin pm0.exe pm0.com

; WASM:

; wasm pm0.asm

; wlink file pm0.obj form DOS COM

.model tiny

.code

.386p ; все наши примеры рассчитаны на 80386

org 100h ; это СОМ-программа

start:

; подготовить сегментные регистры

push cs

pop ds ; DS - сегмент данных (и кода) нашей программы

push 0B800h

pop es ; ES - сегмент видеопамяти

; проверить, находимся ли мы уже в защищенном режиме

mov еах,cr0 ; прочитать регистр CR0

test al,1 ; проверить бит РЕ,

jz no_V86 ; если он ноль - мы можем продолжать,

; иначе - сообщить об ошибке и выйти

mov ah,9 ; функция DOS 09h

mov dx,offset v86_msg ; DS:DX - адрес строки

int 21h ; вывод на экран

ret ; конец СОМ-программы

; (раз это защищенный режим, в котором работает наша DOS-программа, это должен быть режим V86)

v86_msg db "Процессор в режиме V86 - нельзя переключиться в РМ$"

сюда передается управление, если мы запущены в реальном режиме

no_V86:

; запретить прерывания

cli

; запретить немаскируемое прерывание

in al,70h ; индексный порт CMOS

or al,80h ; установка бита 7 в нем запрещает NMI

out 70h,аl

; перейти в защищенный режим

mov еах,cr0 ; прочитать регистр CRO

or al,1 ; установить бит РЕ,

mov cr0,eax ; с этого момента мы в защищенном режиме

; вывод на экран

xor di,di ; ES:DI - начало видеопамяти

mov si,offset message ; DS:SI - выводимый текст

mov cx,message_l

rep movsb ; вывод текста

mov ax,0720h ; пробел с атрибутом 07h

mov cx,rest_scr ; заполнить этим символом остаток экрана

rep stosw

; переключиться в реальный режим

mov еах,cr0 ; прочитать CR0

and al,0FEh ; сбросить бит РЕ

mov cr0,eax ; с этого момента процессор работает в

; реальном режиме

; разрешить немаскируемое прерывание

in al,70h ; индексный порт CMOS

and al,07Fh ; сброс бита 7 отменяет блокирование NMI

out 70h,al

; разрешить прерывания

sti

; подождать нажатия любой клавиши

mov ah,0

int 16h

; выйти из СОМ-программы

ret

; текст сообщения с атрибутом после каждого символа для прямого вывода на экран

message db 'Н',7,'е',7,'l',7,'l',7,'о',7,' ',7,'и',7,'з',7

db ' ',7,'Р',7,'М',7

; его длина в байтах

message_l = $ - message

; длина оставшейся части экрана в словах

rest_scr = (80*25)-(2*message_l)

end start

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

Бэрри Н. Компьютерные сети. Пер. с англ. - М.: БИНОМ. - 1995. - 400с.

Джамса К., Лалани С., Уикли С. Программирование в WWW для профессионалов. - Минск. - Попурри. - 1997. - 631 с.

Кент П. World Wide Web: Пер. с англ.. - М.: Компьютер. - 1996. - 311 с.

Кулаков Ю.А. Компьютерные сети. - Киев. - 1998. - 384 с.

Компьютерные сети. Принципы, технологии, протоколы/В.Г. Олифер, Н.А. Олифер. - СПб: Питер, 2001. - 672с.

Максимов Н.В., Партыка Т.Л., Попов И.И. Технические средства информатизации: Учебник. - М.: ФОРУМ: ИНФРА-М, 2005. - 576с.: ил. - (Профессиональное образование)

Милославская Н.Г., Толстой А.И. Интрасети: доступ в Internet. Защита: Учеб. пособие для вузов. - М.: ЮНИТИ - ДАНА, 200, 527с.

Колесников Internet: для пользователя. - К.: Издательская группа BHV, 2000.-304с.

Новомлинский Л. Интернет - торговля. Часть 1/ Сети и системы связи. 1998 - №8.

Новомлинский Л. Интернет - торговля. Часть 2/ Сети и системы связи. 1998 - №9.

Пятибратов А.П. Вычислительные машины, сети и телекоммуникации/ Пятибратов А.П., Гудыно Л.П. - М.: Финансы и статистика. - 1998. - 400 с.

Сеть Internet. Применение в науке и бизнесе/ Горностаев Ю.М. и др. - М.: Россия - 1994. - 136 с.

Сеть Internet./ Горностаев Ю.М. и др. - М.: Россия. - 1993. - 88 с.

Сорокин Л. Аукционы в Интернате - будущее электронной коммерции//Мир электронной коммерции. - 2000. - №1.

Информатика: Учебник. - 3-е перераб. изд. / Под ред. проф. Н.В. Макаровой. - М.: Финансы и статистика, 2000. - 768 с.: ил.

Размещено на Allbest.ru


Подобные документы

  • Зарождение компьютерных вирусов. Пути проникновения вирусов в компьютер и механизм распределения вирусных программ. Признаки появления вирусов. Обезвреживание вирусов. Меры профилактики. Классификация вирусов по деструктивным возможностям.

    реферат [16,7 K], добавлен 01.12.2006

  • Представление о "привычках" компьютерных вирусов и ориентация в методах противодействия им. Файловые, загрузочные и комбинированные вирусы. Простые, полиморфные и стелс-вирусы. Антивирусные программы: сканирование, детектирование и удаление вирусов.

    реферат [25,1 K], добавлен 27.02.2009

  • Кто и почему пишет вирусы. Компьютерные вирусы, их свойства, классификация. Пути проникновения вирусов в компьютер, механизм распределения вирусных программ. Методы защиты от компьютерных вирусов. Антивирусные программы: Doctor Web, Microsoft Antivirus.

    реферат [45,2 K], добавлен 27.09.2008

  • Свойства и классификация компьютерных вирусов, использование вирусов-невидимок. Схемы функционирования простых загрузочных и файловых вирусов. Троянские кони, программные закладки и сетевые черви. Признаки появления вирусов и методы защиты от них.

    реферат [37,2 K], добавлен 11.01.2012

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

    презентация [43,8 K], добавлен 10.10.2011

  • Информационная безопасность. Угроза информационной безопасности. Классификация компьютерных вирусов. Загрузочные вирусы. Файловые вирусы. Сетевые вирусы. Макро-вирусы. Резидентные вирусы. Методы обеспечения информационной безопасности.

    реферат [19,8 K], добавлен 06.04.2007

  • Классификация компьютерных вирусов по основным признакам. Разделение вирусов по деструктивным возможностям. Внедрение файловых вирусов в исполняемые файлы операционных систем. Алгоритм работы файлового вируса. Особенности действия загрузочных вирусов.

    реферат [24,4 K], добавлен 10.11.2010

  • Разновидности компьютерных вирусов. Антивирусные программы. Стандартные программы оперативной системы Windows. Проявление наличия вируса в работе с ПЭВМ. Последствия заражения компьютера вирусами.

    контрольная работа [27,9 K], добавлен 28.07.2004

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

    презентация [3,9 M], добавлен 10.03.2012

  • Особенности и принципы безопасности программного обеспечения. Причины создания вирусов для заражения компьютерных программ. Общая характеристика компьютерных вирусов и средств нейтрализации их. Классификация методов защиты от компьютерных вирусов.

    реферат [21,7 K], добавлен 08.05.2012

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