首页 > 解决方案 > windows asm中如何调用函数

问题描述

如何调用这个调用,函数有参数,我不知道调用,

00EC17E7    68 347BEC00     push Project2.00EC7B34                   ;                                                -----------------------------------------------
00EC17EC    E8 48FBFFFF     call Project2.00EC1339
00EC17F1    83C4 04         add esp,0x4                              ;esp是栈指针
00EC17F4    8BF4            mov esi,esp
00EC17F6    6A 04           push 0x4
00EC17F8    68 707BEC00     push Project2.00EC7B70                   ; 参数1:标题提示
00EC17FD    68 7C7BEC00     push Project2.00EC7B7C                   ; 参数2:是否
00EC1802    6A 00           push 0x0                                 ; 参数3:0
00EC1804    FF15 98B0EC00   call dword ptr ds:[<&USER32.MessageBoxA>>; 函数调用:USER32.MessageBoxA
00EC180A    3BF4            cmp esi,esp                              ; true
00EC180C    E8 1BF9FFFF     call Project2.00EC112C
00EC1811    68 347BEC00     push Project2.00EC7B34                   ; -----------------------------------------------

如何调用这个函数调用

为什么显示错误,谢谢大师。

mov esp,00FCFB54
add esp,0x4
mov esi,esp
push 0x4
push 0x00EC7B70
push 0x00EC7B7C
push 0x0
call 0xECB098
cmp esi,esp

标签: assembly

解决方案


取决于您在调用另一个被调用函数之前用于调用函数的处理器,您可以做两件事

1-将参数复制到堆栈,被调用者将从内存中获取它。(x86)。

2-在 CPU 寄存器中传递这些参数(x86 64 位)


推荐阅读