Доклад: Вирусы под Windows
call GetModuleHandle
mov [hlnst],eax
push L 0
push offset szClassName
call FindWindow
or eax.eax
jz reg_class
.Пространство для модификации строки заголовка
mov [zero]," "
reg_class:
;Инициализируем структуру WndClass
mov [wc.clsStyle],CS_HREDRAW+CS_VREDRAW+CS_GLOBALCLASS
mov [wc.clsLpfnWndProc],offset WndProc
mov [wc.clsCbClsExtra],0
mov [wc.clsCbWndExtra],0
mov eax,[hlnst]
mov [wc.clsHlnstance], eax
[Загружаем значок
push L IDLAPPLICATION
push L 0
call Loadlcon
mov [wc.clsHlcon], eax
; Загружаем курсор
push L IDC.ARROW
push L 0
call LoadCursor
mov [wc.clsHCursor], eax
.Инициализируем оставшиеся поля структуры WndClass
mov [wc.clsHbrBackground],COLOR_WINDOW+1
mov dword ptr [wc.clsLpszMenuName],0
mov dword ptr [wc.clslpszClassNameJ.offset szClassName
;Регистрируем класс окна
push offset we
call RegisterClass
; Создаем окно
push L 0 .IpParam
push [hinst] .hinstance
push L 0 ;Меню
push L 0 ;hwnd родительского окна
push L CWJJSEDEFAULT ;Высота
push L CWJJSEDEFAULT ;Длина
push L CWJJSEDEFAULT ;Y
push L CWJJSEDEFAULT ;X
push L WSJ3VERLAPPEDWINDOW ;Style
push offset szTitleName ;Title Style
push offset szClassName ;Class name
push L 0 ;extra style
call CreateWindowEx
.Сохраняем HWND
mov [newhwnd], eax
.Отображаем окно на экране
push L SW.SHOWNORMAL
push [newhwnd]
call ShowWindow
;0бновляем содержимое окна
push [newhwnd]
call UpdateWindow
;0чередь сообщений
msgJoop:
.Прочитаем следующее сообщение из очереди
push L О
push L О
push L О
push offset msg
call GetMessage
;Если функция GetMessage вернула нулевое значение, то завершаем
[обработку сообщений и выходим из процесса