Создаем вирус и антивирус. Игорь Гульев
Чтение книги онлайн.

Читать онлайн книгу Создаем вирус и антивирус - Игорь Гульев страница 25

Название: Создаем вирус и антивирус

Автор: Игорь Гульев

Издательство:

Жанр: Компьютеры: прочее

Серия:

isbn: 5-89818-087-7

isbn:

СКАЧАТЬ поток

      push L 0

      call PostQuitMessage

      ;Выходим из обработки сообщения

      mov eax, 0

      jmp finish

      ;Сообщение WM_LBUTTONDOWN (нажата левая кнопка мыши)

      wmlbuttondown:

      inc [mbx_count]

      ;Обновим содержимое окна

      push L 0

      push L 0

      push [hwnd]

      call InvalidateRect

      ;Выходим из обработки сообщения

      mov eax, 0

      jmp finish

      ;Сообщение WM_RBUTTONDOWN (нажата правая кнопка мыши)

      wmrbuttondown:

      push L 0

      call MessageBeep

      ;Выходим из обработки сообщения

      jmp finish

      ;Сообщение WM_SIZE (изменен размер окна)

      wmsize:

      ;Выходим из обработки сообщения

      mov eax, 0

      jmp finish

      ;Сообщение WM_GETMINMAXINFO (попытка изменить размер

      ;или положение окна)

      wmgetminmaxinfo:

      ;Заполним структуру MINMAXINFO

      mov ebx, [lparam]

      mov [(MINMAXINFO ptr ebx).mintrackposition_x],350

      mov [(MINMAXINFO ptr ebx).mintrackposition_y],60

      ;Выходим из обработки сообщения

      mov eax, 0

      jmp finish

      ;Выходим из обработки сообщения

      finish:

      ret

      WndProc endp

      ;Процедура перевода байта в ASCII−формат для печати. Значение,

      ;находящееся в регистре AL, будет записано в ASCII−формате

      ;по адресу ES:EDI

      HexWrite8 proc

      ;Разделяем байт на полубайты и загружаем их в регистры AH и AL

      mov ah,al

      and al,0Fh

      shr ah,4

      ;Добавляем 30h к каждому полубайту, чтобы регистры содержали коды

      ;соответствующих символов ASCII. Если число,

      ;записанное в полубайте, было больше 9,

      ;то значение в этом полубайте надо еще корректировать

      or ax,3030h

      ;Меняем полубайты местами, чтобы регистр AH содержал младший

      ;полубайт, а регистр AL – старший

      xchg al,ah

      ;Проверим, надо ли корректировать младший полубайт,

      ;если да – корректируем

      cmp ah, 39h

      ja @@4

      ;Проверим, надо ли корректировать старший полубайт,

      ;если да – корректируем

      @@1:

      cmp al,39h

      ja @@3

      ;Сохраним значение по адресу ES:EDI

      @@2:

      stosw

      ret

      ;Корректируем значение старшего полубайта

      @@3:

      sub al, 30h

      add al, ”A”–10

      jmp @@2

      ;Корректируем значение младшего полубайта

      @@4:

      sub ah, 30h

      add ah, ”A”–10

      jmp @@1

      HexWrite8 endp

      ;Процедура перевода слова в ASCII−формат для печати.

      ;Значение, находящееся в регистре AX, будет записано

      ;в ASCII−формате по адресу ES:EDI

      HexWrite16 СКАЧАТЬ