惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - XiaoHui

windbg tips windbg无法下载pdb调试符号 python连接数据库 - XiaoHui unix/linux tips freebsd中xorg 7.4键盘反应迟顿的问题 Django升级到1.0以后的一些变化 ubuntu安装新字体 诡异的修改首页--00333.cn/alei.htm 使用nmap扫描内网在线机器的MAC地址 [转载]HOWTO 使用 vim 的 minibuf 来切换缓冲区 - XiaoHui rtorrent无法完全支持中文的解决办法 EFLAGES寄存器中的系统标志 How to manually create a crash dump file 因网络限制而无法连接MS的symbol服务器的解决办法 NEG+SBB指令组合的用处 Image与Base64String的互转换 编程实现清除temp1.exe,temp2.exe木马 类似Acdsee的东东,不过是用.NET的。 AIHear 0.1.2
Nt*与Zw*的区别
XiaoHui · 2007-05-13 · via 博客园 - XiaoHui

        今天在看Undocumented Windows 2000 Secrets的时候, 一段对于Nt*与Zw*的区别,看了很久,看得不是很明白,后来通过网上查阅,现在比较清楚了.

        以下为原文:

        "一组与执行体的系统服务(executive's system services)平行的入口点.从内核模式的代码()中调用一个ZwXxx入口点将获得相应的系统服务,只是在使用Zw*()函数时,不会检查调用者的访问权限和参数的有效性,而且调用不会将先前模式(previous mode)切换到用户模式"

        "尽管任意一组函数都可以从内核模式调用,但如果用Zw*()函数来代替Nt*()函数,则可将先前模式(这里的先前模式指的是发出请求的模式)切换到内核模式"

        借助于LiveKd,我们来看一下Nt*()和Zw*()的区别:

1.在Ntdll.dll中的Nt*()与Zw*()

kd> u Ntdll!NtCreateFile L4
ntdll!NtCreateFile:
7c92d682 b825000000 mov eax,25h
7c92d687 ba0003fe7f mov edx,offset SharedUserData!SystemCallStub (7ffe0
300)
7c92d68c ff12 call dword ptr [edx]
7c92d68e c22c00 ret 2Ch

--------------------------------------------------------------------------------

kd> u Ntdll!ZwCreateFile L4
ntdll!NtCreateFile:
7c92d682 b825000000 mov eax,25h
7c92d687 ba0003fe7f mov edx,offset SharedUserData!SystemCallStub (7ffe0
300)
7c92d68c ff12 call dword ptr [edx]
7c92d68e c22c00 ret 2Ch

通过上面的代码,我们不难发现,实际上在Ntdll中Nt*()与Zw*()是完全一样的.

2.在ntoskrnl.exe中的Nt*()与Zw*()

kd> u nt!ZwCreateFile L14
nt!ZwCreateFile:
808059a0 b825000000 mov eax,25h
808059a5 8d542404 lea edx,[esp+4]
808059a9 9c pushfd
808059aa 6a08 push 8
808059ac e8801c0000 call nt!KiSystemService (80807631)
808059b1 c22c00 ret 2Ch

-------------------------------------------------------------------------------

kd> u nt!NtCreateFile L16
nt!NtCreateFile:
80898bf8 8bff mov edi,edi
80898bfa 55 push ebp
80898bfb 8bec mov ebp,esp
80898bfd 33c0 xor eax,eax
80898bff 50 push eax
80898c00 50 push eax
80898c01 50 push eax
80898c02 ff7530 push dword ptr [ebp+30h]
80898c05 ff752c push dword ptr [ebp+2Ch]
80898c08 ff7528 push dword ptr [ebp+28h]
80898c0b ff7524 push dword ptr [ebp+24h]
80898c0e ff7520 push dword ptr [ebp+20h]
80898c11 ff751c push dword ptr [ebp+1Ch]
80898c14 ff7518 push dword ptr [ebp+18h]
80898c17 ff7514 push dword ptr [ebp+14h]
80898c1a ff7510 push dword ptr [ebp+10h]
80898c1d ff750c push dword ptr [ebp+0Ch]
80898c20 ff7508 push dword ptr [ebp+8]
80898c23 e87bfeffff call nt!IoCreateFile (80898aa3)
80898c28 5d pop ebp
80898c29 c22c00 ret 2Ch

当我们看到上面代码的时候,就会发现在ntoskrnl.exe中Nt*()与Zw*()的区别了