当前位置: 代码迷 >> 汇编语言 >> 关于addr和offset的有关问题
  详细解决方案

关于addr和offset的有关问题

热度:3662   发布时间:2013-02-26 00:00:00.0
关于addr和offset的问题
FindWindow,addr   szDestClass,NULL
wsprintf,addr   szBuffer,addr   szStart,addr   szText
SendMessage,hWnd,WM_SETTEXT,0,addr   szText
中为何用的都是addr   它们之后的变量都是全局变量啊
为何不用offset?

以下是源代码

.386
.model   flat,stdcall
option   casemap:none
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
;   Include   文件定义
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
;   数据段
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
.data
hWnd dd ?
szBuffer db 256   dup   (?)

.const
szCaption db 'SendMessage ',0
szStart db 'Press   OK   to   start   SendMessage,   param:   %08x! ',0
szReturn db 'SendMessage   returned! ',0
szDestClass db 'MyClass ',0 ;目标窗口的窗口类
szText db 'Text   send   to   other   windows ',0
szNotFound db 'Receive   Message   Window   not   found! ',0
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
;   代码段
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
.code
start:
invoke FindWindow,addr   szDestClass,NULL
.if eax
mov hWnd,eax ;找到目标窗口则发送消息
invoke wsprintf,addr   szBuffer,addr   szStart,addr   szText
invoke MessageBox,NULL,offset   szBuffer,offset   szCaption,MB_OK
invoke SendMessage,hWnd,WM_SETTEXT,0,addr   szText
invoke MessageBox,NULL,offset   szReturn,offset   szCaption,MB_OK
.else
invoke MessageBox,NULL,offset   szNotFound,offset   szCaption,MB_OK
.endif
invoke ExitProcess,NULL
;> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
  相关解决方案