我正在构建一个没有任何宏的Windows装配程序。所以我下载了一个使用宏的程序,并将其转换为“纯”汇编代码。Windows装配疑问 - x86
但是我在这里面临一个问题。有一个标签@@:
,我不明白,也跳转jne @F
,我没有得到它。这两个符号是什么?
MyWndProc:
push ebp
mov ebp, esp
cmp DWORD PTR [ebp+12], 2 ;WM_DESTROY=2
jne @F
push ecx
push NULL
mov dword ptr ecx, 7e42ca5ah ;address of PostQuitMessage
call ecx
pop ecx
@@:
push DWORD PTR [ebp+20]
push DWORD PTR [ebp+16]
push DWORD PTR [ebp+12]
push DWORD PTR [ebp+8]
call DefWindowProc
;mov dword ptr edx, 7e42c17eh
;call edx
leave
ret 16
也为PostQuitMessage
API我可以硬编码的内存地址(在WinXP 32位SP3英文),但对于DefWindowProc
它编译,但在执行时,它打破。有人知道为什么吗?
感谢支持人员。
PS:我使用MASM32
为什么“没有任何宏”? – Andrey 2010-10-06 18:51:00
为什么?两个原因:1)我想看看Windows二进制文件的细节。 2)我想在C程序中构建一个汇编程序。为什么?我只是一个*非常*好奇的人... – jyz 2010-10-06 19:04:04
硬编码地址= no-no。 – 2010-10-07 00:07:23