懂汇编的帮忙看下怎么CALL TextOutA

来源:百度知道 编辑:UC知道 时间:2024/05/10 13:39:42
是一个GDI32的TextOutA(GDI32.TextOutA)
我想这个是系统的函数应该不用复制汇编了吧?
不过在这个函数上面还有设置了字体颜色和字体大小

00421D20 85F6 TEST ESI,ESI
00421D22 74 77 JE SHORT meteor.00421D9B
00421D24 8B86 F4060000 MOV EAX,DWORD PTR DS:[ESI+6F4]
00421D2A 8D5424 18 LEA EDX,DWORD PTR SS:[ESP+18]
00421D2E 52 PUSH EDX
00421D2F 50 PUSH EAX
00421D30 8B08 MOV ECX,DWORD PTR DS:[EAX]
00421D32 FF51 44 CALL DWORD PTR DS:[ECX+44]
00421D35 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18]
00421D39 6A 01 PUSH 1
00421D3B 50 PUSH EAX
00421D3C FF15 7C805A00 CALL DWORD PTR DS:[<&GDI32.SetBkMode>] ; GDI32.SetBkMode
00421D42 8B5424 1C MOV EDX,DWORD PTR SS:[ESP+1C]
00421D46 33C9 XOR ECX,ECX
00421D48 8A6C24 24 MOV CH,BYTE PTR SS:[ESP+24]
00421D4C 8B4424 18 MOV EAX,DWORD PTR SS:[ES

TEST ESI,ESI
JE SHORT meteor.00421D9B
MOV EAX,DWORD PTR DS:[ESI+6F4]
LEA EDX,DWORD PTR SS:[ESP+18]
PUSH EDX
PUSH EAX
MOV ECX,DWORD PTR DS:[EAX]
CALL DWORD PTR DS:[ECX+44]
MOV EAX,DWORD PTR SS:[ESP+18]
PUSH 1
PUSH EAX
CALL DWORD PTR DS:[<&GDI32.SetBkMode>] ; GDI32.SetBkMode
MOV EDX,DWORD PTR SS:[ESP+1C]
XOR ECX,ECX
MOV CH,BYTE PTR SS:[ESP+24]
MOV EAX,DWORD PTR SS:[ESP+18]
MOV CL,BYTE PTR SS:[ESP+20]
AND EDX,0FF
SHL ECX,8
OR ECX,EDX
PUSH ECX
PUSH EAX
CALL DWORD PTR DS:[<&GDI32.SetTextColor>>; GDI32.SetTextColor
MOV EDI,EBX ;以下7行统计字符吕的字符个数
OR ECX,FFFFFFFF
XOR EAX,EAX
MOV EDX,DWORD PTR SS:[ESP+10]
REPNE SCAS BYTE PTR ES:[EDI]
MOV EAX,DWORD PTR SS:[ESP+18]
NOT ECX
DEC ECX
PUSH ECX ;把最后一个参数先压入栈中,即nCount参数
MOV ECX,DWORD PTR SS:[ESP+18]
PUSH EBX ;把字符串的首地址压入栈中
PUSH ECX ;把绘图起点Y坐标值