具体过程:

用visual studio2022新建一个x86汇编项目

二 调用win32api 函数MessageBoxA的汇编程序代码

x86_call_win32api.asm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
;x86_call_win32api.asm
.586
.model flat,stdcall
option casemap:none

includelib ucrt.lib
includelib legacy_stdio_definitions.lib
includelib Kernel32.lib
includelib User32.lib

MessageBoxA proto hWndx:DWORD,lpText:BYTE,lpCaption:BYTE,uType:DWORD

extern printf:proc

.data
.code
main proc
push 0
push 0
push 0
push 0
call MessageBoxA
ret
main endp
end

备注:

1.调用MessageBoxA需要库includelib Kerne132.libincludelib User32.lib

2.MessageBoxA proto hWndx:DWORD,lpText:BYTE,lpCaption:BYTE,uType:DWORD的意思是调用函数并传参数

三 调用退出进程函数ExitProcess的汇编程序代码

x86_call_win32api.asm

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
;x86_call_win32api.asm
.586
.model flat,stdcall
option casemap:none

includelib ucrt.lib
includelib legacy_stdio_definitions.lib
includelib Kernel32.lib
includelib User32.lib

MessageBoxA proto hWndx:DWORD,lpText:BYTE,lpCaption:BYTE,uType:DWORD
ExitProcess proto uCode:DWORD

extern printf:proc

.data
.code
main proc
push 0
push 0
push 0
push 0
call MessageBoxA
push 0
call ExitProcess
main endp
end