assembly - 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
解决方案
取决于您在调用另一个被调用函数之前用于调用函数的处理器,您可以做两件事
1-将参数复制到堆栈,被调用者将从内存中获取它。(x86)。
2-在 CPU 寄存器中传递这些参数(x86 64 位)
推荐阅读
- generics - 具有多种类型约束的复杂扩展
- windows - 通过 Powershell IndexOutOfRangeException 进行 Windows 更新
- python - 如何使用带有 Tesseract/Python 的 .png 中的坐标提取文本?
- c# - 如何从串口c#中的HID iClass阅读器读取标签号
- c# - 如何在特征集合中添加高度坐标然后序列化到 Geojson
- javascript - 如何更新值 AlpineJS
- python - 'SparseTensor' 对象不是可下标的 keras
- ios - 检查 Swift 中未初始化的非可选值?
- c++ - 功能插件和任务队列尝试
- mysql - MYSQL 工作台。如何在 sql (mysql workbench) 中计算年龄?然后,在数据库中找到年龄的比例