Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Общий алгоритм работы вирусаСодержание книги
Поиск на нашем сайте
Теперь настало время создать алгоритм работы нашего вируса, чем мы и займемся. Как и прежде, попав при начальной загрузке машины в память по адресу 0000:7C00h, вирус должен выполнить такие действия:
Эта секция, в свою очередь, должна:
Далее выполняется загрузка операционной системы. Вирусный обработчик Int 16h,как было сказано выше, следит за состоянием обработчика Int 21h, и перехватывает это прерывание,если по какой - либо причине вирусная процедура обработки Int 21h не активна. Алгоритм его работы подробно описан в предыдущем пункте. Как вы уже знаете," заразные " функции мы возложим на обработчик прерывания Int 21h. О том, как это будет реализовано, тоже было рассказано выше. Полный текст созданного вируса Как ни жалко, но остается только одно - "слепить" все части нашей заразной разработки в одно целое и привести полученный результат: Скачать boot2.asm (20Kb) Как видите, вирус является некоторой "помесью" программы из предыдущей главы с принципиально новыми фрагментами из главы, которую вы сейчас читаете. Поэтому я не считаю нужным заново объяснять идеи, заложенные в предыдущую версию программы. Желающие получить такие объяснения могут вернуться к предыдущей главе. Заметьте, нам опять повезло - вирус целиком поместился в один сектор, осталось даже 9 свободных байт. Испытание вируса С методикой испытания загрузочного вируса вы уже знакомы. Поэтому можно сразу переходить к самому приятному этапу в творчестве любого создателя вирусов. Модель примерно такая: из - под WINDOWS запустите VC, NC, Turbo Pascal или что - нибудь похожее. После чего попробуйте несколько раз установить текущим один из дисководов. Понаблюдайте, как вирус заражает дискеты и при каких условиях. Заражение должно происходить обязательно. Наша предыдущая программа такими возможностями явно не обладала. Теперь выйдите из оболочки обратно в WINDOWS и запустите, например, FAR. Вы увидите, что в FARе наш вирус не активизируется. Не активизируется он и в WORDе и EXCELе. Объясняется это просто: Эти программы являются 32-х разрядными WINDOWS - приложениями, и поэтому не могут вызывать DOSовские прерывания! Вместо этого для смены диска, например, вызывается SetCurrentDisk. Об этом мне поведал Eugene Roshal, разработчик FARа. Хотя то, чего мы добились - уже большой шаг вперед по сравнению с прошлой разработкой. Вместо комментария Наверное, следовало бы наметить пути совершенствования нашей разработки. Первое, что приходит на ум - тем или иным способом перехватить тот момент, когда система вызывает SetCurrentDisk, если это вообще возможно. Как это сделать - пока неясно, так что вопрос остается открытым. Определенные надежды вселяет описанная выше возможность использовать для активизации вируса прерывание Int 16h. В самом деле, почему бы не заражать диски, например, при каждом десятом нажатии на клавишу " ALT ", " SHIFT " и т.п.? Правда, этот метод имеет и свои недостатки, которые делают его похожим на обычное ламерство. Зато его очень просто реализовать, и работать он будет в любом WINDOWS - приложении... Единственное, чего делать точно не следует - это огорчаться по поводу не совсем достигнутой цели. Думаю, это дело недалекого будущего. Как сказал Мао Цзедун, "Наш путь труден, но перспективы - светлые!". Заключение Эта книга задумывалась и писалась лишь для того, чтобы приоткрыть завесу таинственности и секретности, которой окутана почти не овещаемая в литературе тема компьютерных вирусов. Автор ни в коем случае не ставил своей целью обучить пользователей ЭВМ разработке всевозможных "вредных" программных средств, а просто хотел поделиться своими знаниями и результатами экспериментов с широкой общественностью. Наверняка найдется немало людей - специалистов и любителей, которых интересует затронутая в данной работе тема. И если кто - то из них пожелает ознакомиться с предлагаемой книгой, я буду считать, что потратил время не зря. Разработка действующих компьютерных вирусов - захватывающее и сложное дело, требующее немалого опыта и определенной теоретической базы. Надеюсь, эта книга сможет оказать вам некоторую помощь. К сожалению, изложение не рассчитано на начинающих, поэтому автору не удалось приблизить стиль книги к научно - популярному. Хотя это трудно отнести к недостаткам. До встречи! г. Житомир, 18.08.1998 И. КовальПо возникшим вопросам вы можете обратиться к автору этой книги.С благодарностью приму любые замечания, пожелания и предложения. ПИШИТЕ ВИРУСЫ, КАК ЗАВЕЩАЛ ВЕЛИКИЙ ЛЕНИН, КАК УЧИТ НАС КОММУНИСТИЧЕСКАЯ ПАРТИЯ!!! Украина г. Житомир ул. Большая Бердичевская, д. 83, кв. 25 Коваль Игорь Михайлович тел. 8 (0412) 343427 8 (0412) 204218 Индекс: 262002Литература
Приложение 1. Краткий справочник по функциям MS DOS и BIOS Справочные материалы по функциям MS DOS и BIOS с незначительными изменениями заимствованы из [1], за что автор приносит К. Г. Финогенову свои извинения. Функция 09h Вывод строки на экран. Последним символом строки должен быть "$".Управляющие коды: 07h - звонок, 08h - шаг назад, 0Ah - перевод строки, 0Dh - возврат каретки. Вызов: AH = 09h DS: DX = адрес строки. Функция 0Eh Выбор диска. Предназначена для смены текущего диска. Также возвращает количество логических дисков. Вызов: AH = 0Eh AL = код дисковода (0 = A, 1 = B, 80h = C и т.п.) Возврат: AL = количество дисководов в системе. Функция 19h Получение текущего диска. Вызов: AH = 19h Возврат: AL = код текущего диска (0 = A, 1 = B, 80h = C и т.п.). Функция 1Ah Установка адреса области передачи данных (DTA). Устанавливает заданный адрес DTA. Вызов: AH = 1Ah DS: DX = адрес DTA. Функция 25h Установка вектора прерывания. Записывает адрес программы обработки заданного прерывания в таблицу векторов. Вызов: AH = 25h AL = номер вектора прерывания DS: DX = адрес программы обработки прерывания. Функция 19h Получение даты. Вызов: AH = 2Ah Возврат: CX = год DH = месяц DL = день AL = день недели (0 = воскресенье, 6 - суббота). Функция 2Fh Получение адреса области передачи данных (DTA). Возвращает текущий адрес DTA. Вызов: AH = 2Fh Возврат: ES: DX = адрес DTA. Функция 35h Получение вектора прерывания. Считывает адрес программы обработки заданного прерывания из таблицы векторов. Вызов: AH = 35h AL = номер вектора прерывания Возврат: ES: BX = адрес программы обработки прерывания. Функция 3Bh Смена каталога.Предназначена для выбора текущего каталога. Вызов: AH = 3Bh DS: DX = полное имя каталога (например, C:\TASM\VIRUS\ При ошибке: CF = 1 AX = код ошибки. Функция 3Dh Открытие файла. Открывает файл с заданным именем и возвращает дескриптор, выделенный этому файлу системой. Указатель устанавливается на начало файла. Вызов: AH = 3Dh AL = режим доступа: 0 - для чтения, 1 - для записи, 2 - для чтения и записи DS: DX = полное имя файла (например, C:\TASM\VIRUS\EXE_VIR.COM) Возврат: AX = дескриптор При ошибке: CF = 1 AX = код ошибки. Функция 3Eh Закрытие файла. Закрывает файл с заданным дескриптором.Дескриптор освобождается, кроме того, модифицируются дата и время создания файла, если файл был изменен. Вызов: AH = 3Eh DX = дескриптор При ошибке: CF = 1 AX = код ошибки. Функция 3Fh Чтение из файла или устройства. Считывает данные из файла или устройства и модифицирует указатель. При чтении читается строка указанной длины. При чтении из символьного устройства чтение прекращается, если встретился символ возврата каретки (например,при вводе с клавиатуры). Вызов: AH = 3Fh BX = дескриптор CX = количество передаваемых символов DS: DX = адрес буфера, в который помещаются данные Возврат: AX = число переданных байт При ошибке: CF = 1 AX = код ошибки. Функция 40h Запись в файл или в устройство. Считывает данные из буфера и записывает их в файл, при этом модифицируется указатель. При записи записывается строка указанной длины. Вызов: AH = 40h BX = дескриптор CX = количество передаваемых символов DS: DX = адрес буфера, в который помещаются данные Возврат: AX = число переданных байт При ошибке: CF = 1 AX = код ошибки. Функция 42h Установка указателя в файле. Предназначена для установки указателя на требуемый байт в файле. Вызов: AH = 42h BX = дескриптор AL = режим установки указателя:
CX = старшая часть смещения DX = младшая часть смещения Возврат: CX = старшая часть возвращенного указателя DX = младшая часть возвращенного указателя. Функция 48h Выделение блока памяти указанного размера. Выделяет блок памяти, после чего возвращает его сегментный адрес. Вызов: AH = 48h BX = Размер блока памяти в параграфах Возврат: AX = сегментный адрес выделенного системой блока При ошибке: CF = 1 AX = код ошибки. BX = размер наибольшего доступного в данный момент блока. Функция 49h Освобождение блока памяти. Вызов: AH = 49h ES = сегментный адрес блока,который следует освободить При ошибке: CF = 1 AX = код ошибки. Функция 4Ah Изменение размера блока памяти, который был выделен программе. Вызов: AH = 4Ah BX = новый размер блока в параграфах. ES = сегментный адрес блока, размер которого следует изменить При ошибке: CF = 1 AX = код ошибки. BX = размер наибольшего доступного в данный момент блока. Функция 4Ch Завершение процесса с кодом возврата. Завершает текущую задачу и передает код завершения родительскому процессу. Освобождает выделенную программе память, сбрасывает на диск буферы, закрывает дескрипторы, восстанавливает из PSP вектора прерываний INT 22h, INT 23h и INT 24h. Далее управление передается родительскому процессу. Вызов: AH = 4Ch AL = код возврата. AL = 00h обычно соответствует нормальному завершению программы. Функция 4Eh Поиск первого файла. Производит поиск в заданном каталоге первого файла, соответствующего заданной маске и имеющего указанные атрибуты. Вызов: AH = 4Eh CX = атрибуты файла (могут комбинироваться):
DS: DX = адрес маски для поиска Возврат: имя найденного файла и его расширение записывается в DTA в байты 1Eh - 2Ah. За последним символом расширения всегда следует точка: "." При ошибке: CF = 1 AX = код ошибки. Функция 4Fh Поиск следующего файла. Почти всегда используется в паре с предыдущей функцией и вызывается после того, как был найден первый файл. Вызов: AH = 4Fh Возврат: имя найденного файла и его расширение записывается в DTA в байты 1Eh - 2Ah. За последним символом расширения всегда следует точка: "." При ошибке: CF = 1 AX = код ошибки.
|
||||
Последнее изменение этой страницы: 2016-07-16; просмотров: 376; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.127.153 (0.007 с.) |