.386
.model flat, stdcall
option casemap:none
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; I N C L U D E F I L E S
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; F U N C T I O N S P R O T O T Y P E S
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
proto00 TYPEDEF proto
proto01 TYPEDEF proto :DWORD
proto02 TYPEDEF proto :DWORD, :DWORD
proto03 TYPEDEF proto :DWORD, :DWORD, :DWORD
proto04 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD
proto05 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto06 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto07 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto08 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto09 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto10 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto11 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto12 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto13 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto14 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto15 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto16 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto17 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto18 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto19 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
proto20 TYPEDEF proto :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
pproto00 TYPEDEF PTR proto00
pproto01 TYPEDEF PTR proto01
pproto02 TYPEDEF PTR proto02
pproto03 TYPEDEF PTR proto03
pproto04 TYPEDEF PTR proto04
pproto05 TYPEDEF PTR proto05
pproto06 TYPEDEF PTR proto06
pproto07 TYPEDEF PTR proto07
pproto08 TYPEDEF PTR proto08
pproto09 TYPEDEF PTR proto09
pproto10 TYPEDEF PTR proto10
pproto11 TYPEDEF PTR proto11
pproto12 TYPEDEF PTR proto12
pproto13 TYPEDEF PTR proto13
pproto14 TYPEDEF PTR proto14
pproto15 TYPEDEF PTR proto15
pproto16 TYPEDEF PTR proto16
pproto17 TYPEDEF PTR proto17
pproto18 TYPEDEF PTR proto18
pproto19 TYPEDEF PTR proto19
pproto20 TYPEDEF PTR proto20
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; U S E R D E F I N E D S T R U C T U R E S
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
pr UNION
i00 pproto00 ?
i01 pproto01 ?
i02 pproto02 ?
i03 pproto03 ?
i04 pproto04 ?
i05 pproto05 ?
i06 pproto06 ?
i07 pproto07 ?
i08 pproto08 ?
i09 pproto09 ?
i10 pproto10 ?
i11 pproto11 ?
i12 pproto12 ?
i13 pproto13 ?
i14 pproto14 ?
i15 pproto15 ?
i16 pproto16 ?
i17 pproto17 ?
i18 pproto18 ?
i19 pproto19 ?
i20 pproto20 ?
pr ENDS
ROUTE2 STRUCT
tag DWORD ?
funcaddr pproto02 ?
ROUTE2 ENDS
ROUTE4 STRUCT
tag DWORD ?
funcaddr pproto04 ?
ROUTE4 ENDS
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; C O N S T A N T S
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
.const
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; I N I T I A L I Z E D D A T A
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
.data
szCaption db "Caption", 0
szText db "Text", 0
offProc2 dd OFFSET Proc2
offProc4 dd OFFSET Proc4
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; U N I N I T I A L I Z E D D A T A
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
.data?
MyRoute2 ROUTE2 <?>
MyRoute4 ROUTE4 <?>
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
; C O D E
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
.code
Proc4 proc hWnd:HWND, lpText:LPSTR, lpCaption:LPSTR, uType:UINT
invoke MessageBox, hWnd, lpText, lpCaption, MB_OK
ret
Proc4 endp
Proc2 proc par1:DWORD, par2:DWORD
mov eax, par1
add eax, par2
ret
Proc2 endp
start:
mov MyRoute2.funcaddr, Proc2
; direct
invoke proto02 ptr [Proc2], 1, 2
; indirect
invoke pproto02 ptr [offProc2], 1, 2
; indirect
invoke [MyRoute2.funcaddr], 1, 2
; indirect
lea ebx, MyRoute2
invoke [ebx].ROUTE2.funcaddr, 1, 2
mov MyRoute4.funcaddr, Proc4
; direct
invoke proto04 ptr [Proc4], NULL, offset szText, offset szCaption, MB_OK
; indirect
invoke pproto04 ptr [offProc4], NULL, offset szText, offset szCaption, MB_OK
; indirect
invoke [MyRoute4.funcaddr], NULL, offset szText, offset szCaption, MB_OK
; indirect
lea ebx, MyRoute4
invoke [ebx].ROUTE4.funcaddr, NULL, offset szText, offset szCaption, MB_OK
invoke ExitProcess, 0
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::
end start
Действительно работает! А мы столько мучились.
А что это за разрывы после 70-ого символа ':' или '#' ?