Доклад: Маскировка вирусов

mov ds,ax

mov word ptr ds:[0067h], offset shutdown_return

mov word ptr ds:[0069h],cs

pop ds

[Запрещаем маскируемые прерывания
cli

in al,INT_MASK_PORT
or al.OFFh
out INT_MASK_PORT,al

[Запрещаем немаскируемые прерывания. Данная последовательность
;команд не запрещает "незапрещаемые" прерывания в процессоре
[(этого сделать по определению нельзя), а "не пускает" сигнал

[немаскируемого прерывания к процессору

mov al,8Fh

out CMOS_PORT,al

jmp $+2

mov al,5

out CMOS_PORT+1,al

ret
init_protected_mode ENDP

[Подпрограмма, переводящая процессор в защищенный режим
set_protected_mode PROC

.Открываем адресную линию А20 для доступа свыше 1Мбайт.
;При закрытой линии адресное пространство
["зацикливается" в пределах 1Мбайт
call enable_a20

.Сохраняем значение регистра SS для реального режима
mov real_ss,ss

[Переводим компилятор Turbo Assembler в улучшенный режим.
[IDEAL - это не команда и не оператор, это директива, влияющая
[только на интерпретацию дальнейших строк листинга

ideal

р286

[Загружаем регистр глобальной таблицы дескрипторов GDTR
Igdt [QWORD gdt_gdt] ;db OFh,01h,16h dw offset gdt_gdt

[Переводим процессор в защищенный режим
mov ax,0001h
Imsw ax ;db OFh,01h,FOh

[Переводим компилятор Turbo Assembler назад в режим MASM
masm
.286

[Производим длинный переход для того,
.чтобы очистить внутреннюю очередь
.команд процессора

jmp far flush

db OEAh

dw offset flush

dw CS_DESCR
flush:

Останавливаем в регистр SS селектор сегмента стека
mov ax,SS_DESCR
mov ss.ax

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