首页
社区
课程
招聘
user32.GetWindowTextA的返回值存在哪个寄存器呢?
发表于: 2006-7-26 20:00 4333

user32.GetWindowTextA的返回值存在哪个寄存器呢?

2006-7-26 20:00
4333
是不是返回的字串存在堆栈里,寄存器里存的指针呢?
哪么是在哪个寄存器?
到处找不到,请高人教导

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
2
In buffer
Actually heap.
2006-7-26 20:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
字串的长度也在堆栈里吗?
2006-7-26 21:01
0
雪    币: 44229
活跃值: (19965)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
int GetWindowText(

    HWND hWnd,        // handle of window or control with text
    LPTSTR lpString,        // address of buffer for text
    int nMaxCount         // maximum number of characters to copy
   );       

返回值在EAX里,字符串的地址在参数:lpString,因此你查看这参数就行

push nMaxCount
push lpString //查这个地址,执行完GetWindowText,就看到字符串
push hWnd
call GetWindowText
2006-7-26 21:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢,你就么说我就明白了
多谢指点
2006-7-26 21:21
0
雪    币: 256
活跃值: (673)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
最初由 kanxue 发布
int GetWindowText(

HWND hWnd, // handle of window or control with text
LPTSTR lpString, // address of buffer for text
int nMaxCount // maximum number of characters to copy
........


    呵呵,Win32ASM有规定,API的返回值统一保存在32位通用寄存器EAX中,特殊情况,在放不下时会放入指定的buffer,这时也是由[EAX]查找的,对不对?
    Windows程序的参数入栈一般都是stdcall方式,即自右向左的压栈方式,出栈的时候也就依照相反的顺序弹出来,这在Win32及论坛的相关帖子里面都有很多地方介绍.
2006-7-26 22:16
0
游客
登录 | 注册 方可回帖
返回
//