Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 455; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.108 (0.01 с.) |