加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows程序集怀疑 – x86

发布时间:2020-12-14 05:29:49 所属栏目:Windows 来源:网络整理
导读:我正在构建一个没有任何宏的 Windows程序集程序.所以我下载了一个使用宏的程序,我将其转换为“纯”汇编代码. 但是我在这里面临一个问题.有一个标签@@:我不明白,也是一个跳跃的@F,我没有得到它.这两个符号是什么? MyWndProc: push ebp mov ebp,esp cmp DWOR
我正在构建一个没有任何宏的 Windows程序集程序.所以我下载了一个使用宏的程序,我将其转换为“纯”汇编代码.

但是我在这里面临一个问题.有一个标签@@:我不明白,也是一个跳跃的@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 32bits SP3上),但对于DefWindowProc,它会编译,但在执行时会中断.有人知道为什么吗?

谢谢你们的支持.

PS.:我正在使用masm32

解决方法

@@是一个匿名的本地标签.您可以在文件中包含许多内容.jne @F表示在当前位置之前跳转到最近的@@.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读