gpt4 book ai didi

windows - Fasm x64讯息框

转载 作者:行者123 更新时间:2023-12-03 11:09:24 34 4
gpt4 key购买 nike

我想使用Fasm使用简单的MsgBox编译x64应用程序。我已经编写了代码,它可以成功编译,但是当我运行它时,没有显示任何内容,并且程序刚刚结束。怎么了?

format PE64 GUI 4.0
entry main

include 'win64a.inc'

main:
invoke MessageBox,NULL,'Hello, World!','Fasm message box:',MB_OK
invoke ExitProcess,0

library kernel32,'kernel32.dll',\
user32,'user32.dll'

include 'api/kernel32.inc'
include 'api/user32.inc'

如果尝试在VS2017中进行调试,则会出现异常:

Вызвано исключение по адресу 0x0000000000001108 в program.exe: 0xC0000005: нарушение прав доступа при исполнении по адресу 0x0000000000001108.



如果翻译:

Exception at address 0x0000000000001108 in program.exe: 0xC0000005: access violation when executing address 0x0000000000001108.

最佳答案

我将其标记为社区Wiki,以便其他人可以填写其工作原理的描述。值得注意的是:

导入的的

  • .idata部分
  • 可执行的
  • .text部分
  • sub rsp, 8(或类似的push rbp),用于根据Windows x86-64调用约定进行堆栈对齐。

  • 代码:
    include 'win64a.inc'

    format PE64 GUI 4.0
    entry main

    section '.text' code readable executable
    main:
    sub rsp, 8
    invoke MessageBox,NULL,'Hello, World!','Fasm message box:',MB_OK
    invoke ExitProcess,0

    ;section '.data' data readable writeable
    ; Data here

    section '.idata' import data readable
    library kernel32,'kernel32.dll',\
    user32,'user32.dll'

    include 'api/kernel32.inc'
    include 'api/user32.inc'

    关于windows - Fasm x64讯息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61622739/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com