通过反汇编跟踪一个API函数从Ring3层到Ring0层的具体执行过程,有助于我们加深对相关内核Hook技术的理解。
我们可以使用OD打开notepad.exe程序,对CreateFileW下断后,可以发现,有这样一行代码:
CALL DWORD PTR DS:[<&ntdll.NtCreateFile>>; ntdll.ZwCreateFile
也就是说,CreateFileW(Win32API)实际上是调用了ntdll中的NtCreateFile(或ZwCreateFile)函数。
使用微软自带的Dependency工具查看ntdll中的NtCreateFile和ZwCreateFile函数,可以发现,两个函数的入口地址是一样的,也就是说,两个函数可以看成是同一个函数。