gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:39:58 25 4
gpt4 key购买 nike

我想看看在 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 位调试器,您可以一直调试到系统调用。

关于c - 这个系统调用的跳转指令是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66214201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com