来自这个问题:Windows Native API 如何与内核通信?
以下是ZwClose(HANDLE Handle);
Windows 10 X86_64 中 NTDLL.DLL 中系统调用的示例:
NtClose proc near
mov r10, rcx
mov eax, 0Fh
test byte ptr ds:7FFE0308h, 1
jnz short loc_a
syscall
retn
loc_a:
int 2Eh
retn
NtClose endp
我的问题是,为什么会出现两种不同的指令syscall
,并int 0x2E
在一个子程序?的0xF
在EAX值的IDZwClose()
和/或NtCose()
。调试时,代码执行永远不会到int 0x2E
,syscall
指令总是被执行并ds:7FFE0308h
变为零。