x64下内联汇编调call可能崩溃

查看 26|回复 2
作者:马了顶大   
用SetWindowsHookEx hook某个x64程序的主线程后,在主线程调用call有时会崩溃,asm代码如下:
[Asm] 纯文本查看 复制代码EXTERN  m_ptr:QWORD
.data
.const
.code
ASMCall proc
sub rsp,28h
call m_ptr
add rsp,28h
ret
ASMCall endp
end
有时连续调用十几次都正常,有时调用一次就崩溃,是哪里的问题呢

内联, 主线

董督秀   

保存其他寄存器没有?要不上程序与源码?
马了顶大
OP
  


董督秀 发表于 2025-6-8 11:14
保存其他寄存器没有?要不上程序与源码?

汇编代码就是上面这样
然后在cpp文件中声明[C++] 纯文本查看 复制代码extern "C" void ASMCall(UINT64 RCX, UINT64 RDX, UINT64 R8, UINT64 R9);
在hook函数中调用[C++] 纯文本查看 复制代码ASMCall(ptr1, ptr2, lpArg->lParam, 0);
大部分时候都成功,偶尔崩溃,可能是没有保存寄存器的原因,x64下要怎么写呢
您需要登录后才可以回帖 登录 | 立即注册

返回顶部