我正在構建一個沒有任何宏的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