"Игорь Коваль. Как написать вирус" - читать интересную книгу автораВосстановить значения сегментных регистров: mov ax,cs ;Восстанавливаем ;сегментные mov es,ax ;регистры ... mov start_cs,ax mov ds,ax И выполнить переход на начало этой программы : jmp cl_conv_1 ;Передаем управ- cl_conv_1: db 0eah ;ление заражен- dw 100h ;ной программе start_cs dw 0 Здесь команда " jmp cl_conv_1 " очищает очередь процессора ( см. гл. 1, п. 1.7 ) . Без нее наш ви- рус на некоторых процессорах работал бы некоррек- тно . Если же вируса в памяти еще нет, нужно установить его в память .Эту работу выполняют команды, запи- санные за меткой " free_mem " . Как вы уже знаете,резидентная программа должна на- ходиться в памяти в течение сеанса работы компью- тера.Поэтому секция инициализации должна "попро- сить" MS DOS выделить для загрузки резидентной ча- сти соответствующий блок памяти . Существует целый ряд методов, позволяющих получить в распоряжение TSR - программы область памяти дос- таточного размера .Например, в обычных резидентных программах эту функцию выполняет MS DOS в процессе резидентного завершения .При этом область памяти, выделенная TSR - программе при ее запуске, просто усекается до размера резидентной части и остается занятой после завершения программы .Таким образом, резидентная часть размещается в том месте, куда некогда была загружена вся программа. К сожалению, использование такого метода в вирусе порождает целый ряд проблем . Например в этом случае необходимо записывать вирусный код в нача- ло, а не в конец файла - жертвы, иначе при запуске зараженной программы она будет " садиться " в па- мять целиком .Есть и другие трудности, преодолеть которые очень непросто.Не случайно такой прием при написании вирусов применяется редко . |
|
|