Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ²
Call CreateWindowExa, WS_EX_CLIENTEDGE, offset szClassName1,0,. WndProc proc uses ebx edi esi, hwnd: DWORD, wmsg: DWORD,. WS_VISIBLE or WS_CHILD or ES_LEFT OR ES_MULTILINE or. Ws_overlappedwindow, cw_usedefault, cw_usedefault,. Call SendMessageA, WM_SETTEXT, 0, offset Buffer. Call _wsprintfA, offset lpstr, offset lpfor,. Mov, CS_HREDRAW+CS_VREDRAW+CS_GLOBALCLASS. Es_AUTOHSCROLL… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
- 1. http://av-assembler.ru/
- 2. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ: ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠ½ΠΎΠΌΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΠΌΡ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π°ΠΌ «ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ», «Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅» / ΡΠΎΡΡ. Π. Π. ΠΡΠ»ΡΠΊΠΈΠ½. — ΠΠΊΠ°ΡΠ΅ΡΠΈΠ½Π±ΡΡΠ³: Π£ΠΠ’Π£-Π£ΠΠ, 2009.
- 3. http://habrahabr.ru
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
.386.
model flat, STDCALL.
include win32.inc.
extrnBeginPaint:PROC.
extrnCreateWindowExA:PROC.
extrnDefWindowProcA:PROC.
extrnDispatchMessageA:PROC.
extrnEndPaint:PROC.
extrnExitProcess:PROC.
extrnGetMessageA:PROC.
extrnGetModuleHandleA:PROC.
extrnLoadCursorA:PROC.
extrnLoadIconA:PROC.
extrnMessageBoxA:PROC.
extrnPostQuitMessage:PROC.
extrnRegisterClassA:PROC.
extrnShowWindow:PROC.
extrnUpdateWindow:PROC.
extrnSendMessageA:proc.
extrnSetFocus:proc.
extrnGetClientRect:proc.
extrnVirtualQuery:PROC.
extrn_wsprintfA:PROC.
.data.
newhwnddd 0.
lppaintPAINTSTRUCT.
msgMSGSTRUCT.
wcWNDCLASS.
mbiMEMORY_BASIC_INFORMATION.
;Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
vbmdd400000h.
rctRECT.
hInstdd0.
szTitleNamedb 'ΠΠ°ΡΡΠ° Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠ°Π²Π½ΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ°', 0.
szClassNamedb 'ASMCLASS32', 0.
szClassName1db 'edit', 0.
lpfordb 'ΠΠ°Π·ΠΎΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ:%#X, Π’ΠΈΠΏ %#XΠ, Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅: %#X, Π Π°Π·ΠΌΠ΅Ρ: %#X, ΠΡΡΠΈΠ±_ΠΠ°ΡΠΈΡΡ: %#X', 0.
lpstrdb128 dup (0).
Bufferdb4096 dup (0).
.code.
start:
call GetModuleHandleA, 0.
mov [hInst], eax.
reg_class:
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.
call LoadIconA, 0, IDI_APPLICATION.
mov [wc.clsHIcon]. eax.
call LOadCursorA, 0, IDC_ARROW.
mov [wc.clsHCursor], eax.
mov [wc.clsHbrBackground], COLOR_WINDOW+1.
mov dword ptr [wc.clsLpszMenuName], 0.
mov dword ptr [wc.clsLpszClassName], offset szClassName.
call RegisterClassA, offset wc.
call CreateWindowExA, 0, offset szClassName, offset szTitleName,.
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,.
CW_USEDEFAULT, CW_USEDEFAULT, 0,0,[hInst], 0.
mov [newhwnd], eax.
call ShowWindow, [newhwnd], SW_SHOWNORMAL.
call UpdateWindow, [newhwnd].
msg_loop:
call GetMessageA, offset msg, 0,0,0.
cmp ax, 0.
je end_loop.
end_loop:
push [msg.msWPARAM].
call ExitProcess.
WndProc proc uses ebx edi esi, hwnd: DWORD, wmsg: DWORD,.
wparam:DWORD, lparam: DWORD.
LOCAL theDC: DWORD.
cmp [wmsg], WM_DESTROY.
je wmdestroy.
cmp [wmsg], WM_SIZE.
je wmsize.
cmp [wmsg], WM_CREATE.
je wmcreate.
cmp [wmsg], WM_LBUTTONDOWN.
je wmlbuttondown.
cmp [wmsg], WM_PAINT.
je wmpaint.
jmp defwndproc.
wmpaint:
mov eax, 0.
jmp finish.
wmcreate:
call GetClientRect, [hwnd], offset ret.
sub [ret.rcRight], 20.
sub [rct.rcBottom], 20.
call CreateWindowExa, WS_EX_CLIENTEDGE, offset szClassName1,0,.
WS_VISIBLE or WS_CHILD or ES_LEFT OR ES_MULTILINE or.
es_AUTOHSCROLL or ES_AUTOVSCROLL, 0,0,[rct.rcRight],.
[rct.rcBottom],[hwnd], 0,[hInst], 0.
mov [hed], eax.
mov edi, offset Buffer.
cld.
qq4:
mov esi, offset lpstr.
call VirtualQuery, [vbm], offset mbi, size mbi.
call _wsprintfA, offset lpstr, offset lpfor, [mbi.BaseAddress],.
[mbi.lType],[mbi.State],[mbi.RegionSize],[mbi.AllocationProtect].
mov ecx, eax.
rep movsb.
mov [edi], byte ptr 13.
inc edi.
mov [edi], byte ptr 10.
inc edi.
mov ebx,[mbi.RegionSize].
add[vbm], ebx.
cmp [vbm], 7ffff000h.
jb qq4.
mov [edi], byte ptr 0.
call SendMessageA,[hed], WM_SETTEXT, 0, offset Buffer.
call SetFocus,[hed].
mov eax, 0.
jmp finish.
defwndproc:
call DefWindowProcA,[hwnd],[wmsg],[wparam],[lparam].
jmp finish.
wmdestroy:
call PostQuitMessage, 0.
mov eax, 0.
jmp finish.
wmlbuttondown:
call SendMessageA,[newhwnd], WM_DESTROY, 0,0.
mov eax, 0.
jmp finish.
wmsize:
mov eax, 0.
finish:
ret.
WndProc endp.
public WndProc.
end start.