如何在Windows asm中调用函数

时间:2018-10-10 15:19:54

标签: assembly

如何调用此调用,函数具有参数,我不知道调用

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

1 个答案:

答案 0 :(得分:0)

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

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

2-将这些参数传递给CPU寄存器本身(x86 64位)