首页
社区
课程
招聘
奇怪的问题(关于wsprintf函数)
发表于: 2005-2-14 20:41 4082

奇怪的问题(关于wsprintf函数)

2005-2-14 20:41
4082
最近在学win32汇编,碰到了奇怪的问题(关于函数wsprintf,是在学习PE格式时碰到的),如下,请大家帮我看下,先谢了。

                .386
                .model flat,stdcall
                option casemap:none
include                        windows.inc
include                        gdi32.inc
includelib                        gdi32.lib
include                        user32.inc
includelib                        user32.lib
include                        kernel32.inc
includelib                        kernel32.lib

.data
                szTestOut db 'wTest=%08lx,        bTest=%08lx',0dh,0ah
                                         db 'bTest=%08lx,        wTest=%08lx',0dh,0ah,0
                wTest                 dw 13h
                bTest                 db 8h

.data?
szBuffer db 100 dup(?)

.code
start:
                invoke wsprintf,addr szBuffer,addr szTestOut,wTest,bTest,bTest,wTest
                invoke MessageBox,0,addr szBuffer,NULL,MB_OK
                invoke ExitProcess,NULL
end start

居然输出:wTest=00000013,      bTest=00080000
          bTest=00000000,      wTest=00000008
当场晕厥过去,跟了一下。是函数 wsprintf 压栈时出的错。到底是怎么回事?windows的API类似的情况还有吗?请高手指点下。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
2
压栈参数请定义为双字
2005-2-14 21:04
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主可看一下罗云彬的<<汇编中参数的传递和堆栈修正>>,里面有API函数wsprintf的介绍。
2005-2-16 07:35
0
游客
登录 | 注册 方可回帖
返回
//