Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_PP_02_KS41.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
130 Кб
Скачать
☆
  1. Анализ программы управления диалоговымиокнами.

Видыработ:

  • изучить программу наАссемблере;

  • провести анализ структурыпрограммы;

  • провести анализ операторовпрограммы;

  • ознакомиться с возможным использованием операторовпрограммногокода.

Задание1.Проанализировать программу,написанную на ассемблереидобавить комментарии к каждойстрочке.

format PEGUI4.0entrystart

include'win32a.inc'ID_CAPTION =101

ID_MESSAGE =102

ID_ICONERROR = 201

ID_ICONINFORMATION =202

ID_ICONQUESTION =203

ID_ICONWARNING =204

ID_TOPMOST =301

section '.text' code readableexecutablestart:

invokeGetModuleHandle,0

invokeDialogBoxParam,eax,37,HWND_DESKTOP,DialogProc,0or eax,eax

jz exit

invokeMessageBox,HWND_DESKTOP,message,caption,[flags]exit:

invokeExitProcess,0

proc DialogProchwnddlg,msg,wparam,lparampush ebxesiedi

cmp [msg],WM_INITDIALOGje .wminitdialog

cmp [msg],WM_COMMANDje .wmcommand

cmp [msg],WM_CLOSEje .wmclose

xor eax,eax

jmp .finish

.wminitdialog:

invokeCheckRadioButton,[hwnddlg],ID_ICONERROR,ID_ICONWARNING,ID_ICONINFORMATION

jmp .processed

.wmcommand:

cmp [wparam],BN_CLICKED shl 16 +IDCANCELje .wmclose

cmp [wparam],BN_CLICKED shl 16 +IDOKjne .processed

invokeGetDlgItemText,[hwnddlg],ID_CAPTION,caption,40hinvokeGetDlgItemText,[hwnddlg],ID_MESSAGE,message,100hmov [flags],MB_OK

invokeIsDlgButtonChecked,[hwnddlg],ID_ICONERRORcmp eax,BST_CHECKED

jne .iconerror_ok

or [flags],MB_ICONERROR

.iconerror_ok:

invokeIsDlgButtonChecked,[hwnddlg],ID_ICONINFORMATIONcmp eax,BST_CHECKED

jne .iconinformation_ok

or [flags],MB_ICONINFORMATION

.iconinformation_ok:

invokeIsDlgButtonChecked,[hwnddlg],ID_ICONQUESTIONcmp eax,BST_CHECKED

jne .iconquestion_ok

or [flags],MB_ICONQUESTION

.iconquestion_ok:

invokeIsDlgButtonChecked,[hwnddlg],ID_ICONWARNINGcmp eax,BST_CHECKED

jne .iconwarning_ok

or [flags],MB_ICONWARNING

.iconwarning_ok:

invokeIsDlgButtonChecked,[hwnddlg],ID_TOPMOSTcmp eax,BST_CHECKED

jne .topmost_ok

or [flags],MB_TOPMOST

.topmost_ok:

invokeEndDialog,[hwnddlg],1jmp .processed

.wmclose:

invokeEndDialog,[hwnddlg],0

.processed:

mov eax,1

.finish:

pop ediesiebxret

endp

section '.bss' readablewriteableflags dd?

caption rb40h

message rb100h

section '.idata' import data readablewriteablelibrarykernel,'KERNEL32.DLL',\

user,'USER32.DLL'

importkernel,\GetModuleHandle,'GetModuleHandleA',\ExitProcess,'ExitProcess'

importuser,\

DialogBoxParam,'DialogBoxParamA',\CheckRadioButton,'CheckRadioButton',\GetDlgItemText,'GetDlgItemTextA',\IsDlgButtonChecked,'IsDlgButtonChecked',\MessageBox,'MessageBoxA',\EndDialog,'EndDialog'

section '.rsrc' resource datareadabledirectoryRT_DIALOG,dialogsresourcedialogs,\

37,LANG_ENGLISH+SUBLANG_DEFAULT,demonstration

dialogdemonstration,'Createmessagebox',70,70,190,175,WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME

dialogitem'STATIC','&Caption:',-1,10,10,70,8,WS_VISIBLEdialogitem

'EDIT','',ID_CAPTION,10,20,170,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP

dialogitem'STATIC','&Message:',-1,10,40,70,8,WS_VISIBLEdialogitem

'EDIT','',ID_MESSAGE,10,50,170,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL

dialogitem'BUTTON','&Icon',-1,10,70,80,70,WS_VISIBLE+BS_GROUPBOX

dialogitem'BUTTON','&Error',ID_ICONERROR,20,82,60,13,WS_VISIBLE+BS_AUTORADIOBUTTON

+WS_TABSTOP+WS_GROUP

dialogitem'BUTTON','I&nformation',ID_ICONINFORMATION,20,95,60,13,WS_VISIBLE+BS_AUTORADIOBUTTON

dialogitem'BUTTON','&Question',ID_ICONQUESTION,20,108,60,13,WS_VISIBLE+BS_AUTORADIOBUTTON

dialogitem'BUTTON','&Warning',ID_ICONWARNING,20,121,60,13,WS_VISIBLE+BS_AUTORADIOBUTTON

dialogitem'BUTTON','&Style',-1,100,70,80,70,WS_VISIBLE+BS_GROUPBOX

dialogitem'BUTTON','&Topmost',ID_TOPMOST,110,82,60,13,WS_VISIBLE+WS_TABSTOP+BS_AUTOCHECKBOX

dialogitem'BUTTON','OK',IDOK,85,150,45,15,WS_VISIBLE+WS_TABSTOP+BS_DEFPUSHBUTTON

dialogitem'BUTTON','C&ancel',IDCANCEL,135,150,45,15,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON

enddialog

Задание2.Оформитьотчет.