Семантический анализ структуры EXE файла и дисассемблер (с примерами и исходниками), вирусология
Категория реферата: Рефераты по информатике, программированию
Теги реферата: бесплатные рефераты скачать бесплатно, товар реферат
Добавил(а) на сайт: Gorev.
1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ УЗБЕКИСТАНА ИМЕНИ МИРЗО УЛУГБЕКА
ФАКУЛЬТЕТ КОМПЬЮТЕРНЫХ ТЕХНОЛОГИИ
На тему: Семантический разбор EXE-файла .
Выполнил:
Ташкент 2003.
ПЛАН:
Предисловие.
1. Язык ассемблера и структура команд.
2. Структура EXE –файла (семантический разбор).
3. Структура COM-файла.
4. Принцип действия и распространения вируса.
5. Дисассемблер.
6. Программы.
Предисловие
Профессия программиста удивительна и уникальна. В наше время науку и
жизнь невозможно представить без новейших технологии. Все что связано с
деятельностью человека не обходится без вычислительной техники. А это
способствует ее высокому развитию и совершенству. Пусть развитие
персональных компьютеров началось не так давно, но в течение этого времени
были сделаны колоссальные шаги по программным продуктам и еще долгое время
эти продукты будут широко использоваться. Область связанных с компьютерами
знании претерпела взрыв, как и соответствующая технология. Если не брать в
рассмотрение коммерческую сторону, то можно сказать, что чужих людей в этой
области профессиональной деятельности нет. Многие занимаются разработкой
программ не ради выгоды или заработка, а по собственной воле, по увлечению.
Конечно это не должно сказаться на качестве программы, и в этом деле так
сказать «бизнесе» есть конкуренция и спрос на качество исполнения, на
стабильной работе и отвечающий всем требованиям современности. Здесь так
же стоит отметить появление микропроцессоров в 60-х годах, которые пришли
на замену большого количества набора ламп. Есть некоторые разновидности
микропроцессоров которые сильно отличаются друг от друга. Эти
микропроцессоры отличны друг от друга разрядностью и встроенными системными
командами. Самые распространенные такие как: Intel, IBM, Celeron, AMD и
т.д. Все эти процессоры имеют отношение к развитой архитектуре процессоров
фирмы Intel. Распространение микрокомпьютеров послужило причиной
пересмотра отношения к языку ассемблера по двум основным причинам.
Во-первых, программы, написанные на языке ассемблера, требуют
значительно меньше памяти и времени выполнения. Во-вторых, знание
языка ассемблера и результирующего машинного кода дает понимание
архитектуры машины, что вряд ли обеспечивается при работе на языке высокого уровня. Хотя большинство специалистов в области программного обеспечения
ведут разработки на языках высокого уровня, таких как Паскаль, С или
Delphi, что проще при написании программ, наиболее мощное и эффективное
программное обеспечение полностью или частично написано на языке
ассемблера. Языки высокого уровня были разработаны для того, чтобы
избежать специальной технической особенности конкретных компьютеров.
А язык ассемблера, в свою очередь, разработан для конкретной специфики
процессора. Следовательно, для того, чтобы написать программу на языке
ассемблера для конкретного компьютера, следует знать его архитектуру. В
настоящие дни видом основного программного продукта является EXE-файл.
Учитывая положительные стороны этого, автор программы может быть уверен в
ее неприкосновенности. Но зачастую порой это далеко не так. Существует так
же и дисассемблер. С помощью дисассемблера можно узнать прерывания и коды
программы. Человеку, хорошо разбирающегося в ассемблере не сложно будет
переделать всю программу на свой вкус. Возможно отсюда появляется самая
неразрешимая проблема – вирус. Зачем же люди пишут вирус ? Некоторые задают
этот вопрос с удивлением, некоторые с злостью, но тем не менее продолжают
существовать люди которые интересуются этой задачей не с точки зрения
нанесения какого-то вреда, а как интереса к системному программированию.
Пишут Вирусы по разным причинам. Одним нравится системные вызовы, другим
совершенствовать свои знания в ассемблера. Обо всем этом я постараюсь
изложить в своей курсовой работе. Так же в нем сказано не только про
структуру EXE-файла но и про язык ассемблера.
1. Язык Ассемблера.
Интересно проследить, начиная со времени появления первых компьютеров и заканчивая сегодняшним днем, за трансформациями представлений о языке ассемблера у программистов.
Когда-то ассемблер был языком, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Постепенно ситуация менялась. Появлялись более удобные средства общения с компьютером. Но, в отличие от других языков, ассемблер не умирал, более того он не мог сделать этого в принципе. Почему? В поисках ответа попытаемся понять, что такое язык ассемблера вообще.
Если коротко, то язык ассемблера — это символическое представление
машинного языка. Все процессы в машине на самом низком, аппаратном уровне
приводятся в действие только командами (инструкциями) машинного языка.
Отсюда понятно, что, несмотря на общее название, язык ассемблера для
каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на ассемблере, и идей, отражением которых этот язык является.
По-настоящему решить проблемы, связанные с аппаратурой (или даже, более того, зависящие от аппаратуры как, к примеру, повышение быстродействия программы), невозможно без знания ассемблера.
Программист или любой другой пользователь может использовать любые
высокоуровневые средства, вплоть до программ построения виртуальных миров
и, возможно, даже не подозревать, что на самом деле компьютер выполняет не
команды языка, на котором написана его программа, а их трансформированное
представление в форме скучной и унылой последовательности команд совсем
другого языка — машинного. А теперь представим, что у такого пользователя
возникла нестандартная проблема или просто что-то не заладилось. К примеру, его программа должна работать с некоторым необычным устройством или
выполнять другие действия, требующие знания принципов работы аппаратуры
компьютера. Каким бы умным ни был программист, каким бы хорошим ни был
язык, на котором он написал свою чудную программу, без знания ассемблера
ему не обойтись. И не случайно практически все компиляторы языков высокого
уровня содержат средства связи своих модулей с модулями на ассемблере либо
поддерживают выход на ассемблерный уровень программирования.
Конечно, время компьютерных универсалов уже прошло. Как говорится нельзя
объять необъятное. Но есть нечто общее, своего рода фундамент, на котором
строится любое серьезное компьютерное образование. Это знания о принципах
работы компьютера, его архитектуре и языке ассемблера как отражении и
воплощении этих знаний.
Типичный современный компьютер (на базе i486 или Pentium) состоит из следующих компонентов (рис. 1).
[pic]
Рис. 1. Компьютер и периферийные устройства
[pic]
Рис. 2. Структурная схема персонального компьютера
Из рисунка (рис 1) видно, что компьютер составлен из нескольких
физических устройств, каждое из которых подключено к одному блоку, называемому системным. Если рассуждать логически, то ясно, что он играет
роль некоторого координирующего устройства. Давайте заглянем внутрь
системного блока (не нужно пытаться проникнуть внутрь монитора — там нет
ничего интересного, к тому же это опасно): открываем корпус и видим какие-
то платы, блоки, соединительные провода. Чтобы понять их функциональное
назначение, посмотрим на структурную схему типичного компьютера (рис. 2).
Она не претендует на безусловную точность и имеет целью лишь показать
назначение, взаимосвязь и типовой состав элементов современного
персонального компьютера.
Рекомендуем скачать другие рефераты по теме: реферат менеджмент, вопросы и ответы.
1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата