微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这个系统调用的跳转指令是什么?

如何解决这个系统调用的跳转指令是什么?

我想看看系统调用是如何在 x64 Windows 系统上的 x86 下进行的,因为我已经熟悉它是如何在 x64 上完成的。

无论如何,当我遇到这个我不理解的 jmp 指令时,我正在逐条指令。这是我观察到的调用堆栈:

ntdll.dll!_Wow64SystemServiceCall@0()
ntdll.dll!_NtReadVirtualMemory@20()
KernelBase.dll!ReadProcessMemory()

然后,有一个 jmp dword ptr [_Wow64Transition]。这就是我感到困惑的地方。在跳转之后,有一条指令jmp 0033::77CE7009。由于某种原因,进入此说明将回到 ntdll.dll!_NtReadVirtualMemory@20() 的末尾。

这是什么跳远,它有什么作用?

解决方法

您尝试使用 32 位调试器调试 seg:off jmp。指令被设计困在内核模式并被转换成 64 位代码。 32 位调试器无法继续调试,调试 API 实际失败,直到程序再次返回 32 位代码。

如果你有一个 64 位调试器,你可以一直调试到系统调用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。