lushihao 发表于 2023-1-5 23:36

x64汇编调用call 堆栈问题

如果程序是.net是不是不能用x64汇编调用call不管怎么写一调用就崩溃
之前也尝试调用过go写的程序发现也是一调用call 就崩溃 但c写的项目调用call 就啥事没有不会崩溃
我怀疑是不是这些语言的垃圾回收机制问题
CE的汇编

x64dbg

断点我也下过 RCX,RDX,R8 这三个参数的的值不会变
但是我去call x64的MessageBoxW api就啥事没有
代码很简单就一个按钮点击一下弹出信息框


测试例子
链接:https://pan.baidu.com/s/1xMJqq2XTSKC8QPObGxk1tA?pwd=m6cq
提取码:m6cq

kenxy 发表于 2023-1-6 10:29

学过x86的汇编,x64不太懂

lushihao 发表于 2023-1-6 10:34

kenxy 发表于 2023-1-6 10:29
学过x86的汇编,x64不太懂

{:1_926:}
x86也一样崩溃 push两个参数 也一样会崩溃 如果你需要我可以给你生成x86的

PETiger 发表于 2023-1-6 11:07

确保call内函数过程为 __stdcall 的风格,否则在堆栈恢复现场时候会内存错误

lushihao 发表于 2023-1-6 11:16

本帖最后由 lushihao 于 2023-1-6 11:34 编辑

PETiger 发表于 2023-1-6 11:07
确保call内函数过程为 __stdcall 的风格,否则在堆栈恢复现场时候会内存错误
x64 似乎默认是 fastcall我看入参rdx,和rcx、上面那几条代码似乎是垃圾回收的附加入参
页: [1]
查看完整版本: x64汇编调用call 堆栈问题