Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Компьютерные вирусы

push [newhwnd]
call ShowWindow
                                  ;Обновляем содержимое окна
push [newhwnd]
call UpdateWindow
                                  ;Очередь сообщений
msg_loop:
                                  ;Прочитаем следующее сообщение из очереди
push L 0
push L 0
push L 0
push offset msg
call GetMessage
                        ;Если функция GetMessage вернула нулевое значение,
                        ;то завершаем обработку сообщений и выходим из
процесса
cmp ax,0
je  end_loop
                        ;преобразуем виртуальные коды клавиш в сообщения
клавиатуры
push offset msg
call TranslateMessage
                       ;Предаем это сообщение назад в Windows
push offset msg
call DispatchMessage
                       ;Переходим к следующему сообщению
jmp msg_loop
                        ;Выходим из процесса
end_loop:
push [msg.msWPARAM]
call ExitProcess
      ;Обработка сообщений окна. Win32 требует сохранения регистров
      ;EBX, EDI, ESI. запишем эти регистры после "uses" в строке "proc"
      ;Это позволит Ассемблеру сохранить их
WndProc proc uses ebx edi esi,hwnd:DWORD, wmsg:DWORD,
wparam:DWORD, lparam:DWORD
LOCAL theDC:DWORD
 
;Проверим, какое сообщение получили, и перейдем к обработке
 
cmp [wmsg],WM_DESTROY
je   wmdestroy
стр [wmsg],WM_RBUTTONDOWN
je   wmrbuttondown
cmp [wmsg],WM_SIZE
je   wmsize
cmp [wmsg],WM_CREATE
je   wmcreate
cmp [wmsg],WM_LBUTTONDOWN
je   wmlbuttondown
cmp [wmsg],WM_PAINT
je   wmpaint
cmp [wmsg],WM_GETMINMAXINFO
je   wmgetminmaxinfo
 
;Данная программа не обрабатывает это сообщение.
;Передадим его Windows,
;чтобы оно было обработано по умолчанию
jmp defwndproc
 
;Сообщение WM_PAINT (перерисовать содержимое окна)wmpaint:
 
;Подготовим окно для перерисовки
push offset Ippaint
push [hwnd]
call  BeginPaint
mov [theDC], eax
 
;Переведем в ASCII-формат значение mbx_count, которое
;доказывает, сколько раз была нажата левая кнопка мыши
 
mov eax,[mbx_count]
mov edi, offset s_num
call  HexWrite32
 
; Вывод строки в окно
 
push L MSG_L              ;Длина строки
push offset szPaint       ;Строка
push L 5                  ;Y
push L 5                  ;X
push [theDC]              ;DC
call TextOut
 
;0бозначим завершение перерисовки окна
push offset Ippaint
push [hwnd]
call  EndPaint
 
;Выходим из обработки сообщения
mov eax, 0
jmp finish
 
;Сообщение WM_CREATE (создание окна)
 
wmcreate:
 
; Выходим из обработки сообщения
mov eax, 0
jmp finish
 
;Сообщение, не обрабатываемое данной программой, передаем Windows
defwndproc:
 
push [Iparam]
push [wparam]
push [wmsg]
push [hwnd]
call DefWindowProc
 
; Выходим из обработки сообщения
jmp finish
 
;Сообщение WM_DESTROY (уничтожение окна)
wmdestroy:
 
; Закроем поток
push L О
call PostQuitMessage
 
;Выходим из обработки сообщения
mov eax, О
jmp finish
 
;Сообщение WMJ-BUTTONDOWN (нажата левая кнопка мыши)
wmlbuttondown:
 
inc   [mbx_count]
 
;0бновим содержимое окна
push L 0
push L 0
push [hwnd]
call InvalidateRect
 
[Выходим из обработки сообщения
mov eax, О
jmp finish
 
;Сообщение WM_RBUTTONDOWN (нажата правая кнопка мыши)
 
wmrbuttondown:
 
push L 0
call MessageBeep
 
;Выходим из обработки сообщения
jmp finish
 
;Сообщение WM_SIZE (изменен размер окна)
wmsize:
 
;Выходим из обработки сообщения
mov eax, О
jmp finish
 
;Сообщение WM_GETMINMAXINFO (попытка изменить размер
 
;или положение окна)
 
wmgetminmaxinfo:
 
;Заполним структуру MINMAXINFO
mov ebx, [Iparam]
 
mov [(MINMAXINFO ptr. ebx).mintrackposition_x],350
mov [(MINMAXINFO ptr ebx).mintrackposition_y],60
 
;Выходим из обработки сообщения
mov eax, О
jmp finish
 
;Выходим из обработки сообщения
finish:
 
ret
WndProc endp
 
;Процедура перевода байта в ASCII-формат для печати. Значение,
;находящееся в регистре AL, будет записано в ASCII-формате
;по адресу ES-.EDI
HexWriteS proc
 
;Разделяем байт на полубайты и загружаем их в регистры АН и AL
mov ah,al
and al.0Fh
shr  ah,4
 
;Добавляем 30h к каждому полубайту, чтобы регистры содержали коды
;соответствующих символов ASCII. Если число,
 
;записанное в полубайте, было больше 9,
;то значение в этом полубайте надо еще корректировать
or   ax,3030h
 
;Меняем полубайты местами, чтобы регистр АН содержал младший
;полубайт, а регистр 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
HexWriteS endp
 
; Процедура перевода слова в ASCII-формат для печати.
;Значение, находящееся в регистре АХ, будет запис
Пред.678910След.
скачать работу

Компьютерные вирусы

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ