首页
课程
问答
CTF
社区
招聘
看雪峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
看雪峰会
看雪商城
证书查询
社区
编程技术
发新帖
0
0
[求助]Zw*&&Nt*函数的区别,读undocumented window2k secrects的困惑
发表于: 2009-2-18 19:59
5260
[求助]Zw*&&Nt*函数的区别,读undocumented window2k secrects的困惑
icunow
2009-2-18 19:59
5260
我在读undocumented window2k secrects,其中有这样一段(p76中文版)
你可能会奇怪为什么表B-1(位于附录B中)分别为ntdll.dll和ntoskrnl.exe提供了两列,其名称分别为:ntdll.Nt*、ntdll.Zw*和ntoskrnl.Nt*、ntoskrnl.Zw*。原因是,这两个模块导出了两组相互关联的Native API符号。在表B-1(位于附录B中)的最左列给出了所有名字中包含Nt前缀的符号。另一个集合包含相似的名字,不过由Zw前缀代替了Nt。反编译ndll.dll可看出每对符号都指向相同的代码。这看起来似乎是浪费内存。然而,如果你反编译ntoskrnl.exe,你就会发现Nt*符号指向实际的代码而Zw*指向INT 2eh stubs(如示列2-1列出的)。这意味着Zw*函数集合将从用户模式转入内核模式,而Nt*符号直接指向的代码会在模式切换后被执行
。
示例2-1:
NtDeviceIoControlFile:
mov eax, 38h
lea edx, [esp+4]
int 2Eh
ret 28h
我用uf查看了该nt和zw函数,发现差距很大。 为什么作者说是“你就会发现Nt*符号指向实际的代码而Zw*指向INT 2eh stubs(如示列2-1列出的)。这意味着Zw*函数集合将从用户模式转入内核模式,而Nt*符号直接指向的代码会在模式切换后被执行” ?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
收藏
・
0
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
最新回复
(
2
)
dayed
雪 币:
225
活跃值:
(10)
能力值:
( LV5,RANK:60 )
在线值:
发帖
10
回帖
222
粉丝
1
关注
私信
dayed
1
2
楼
怎么又有人问这个!你搜索下论坛, Google能搜索到很多的
2009-2-18 20:06
0
wdfa
雪 币:
125
活跃值:
(35)
能力值:
( LV3,RANK:20 )
在线值:
发帖
4
回帖
39
粉丝
1
关注
私信
wdfa
3
楼
ntdll中的zw和nt是指向相同的代码,它们进入RING0后直接调用ntos中的nt
ntos中的zw要经过int 2e模拟从R3到R0的过程,再调用ntos中的nt
2009-2-19 11:01
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
icunow
6
发帖
12
回帖
10
RANK
关注
私信
他的文章
[求助]由FS寄存器如何得到kernel32.dll地址
4719
[讨论]WRK1.2中断处理中MiResolveMappedFileFault函数试读
4655
[求助]如何通过!object命令得到当前的地址是什么对象?
5812
[求助]读隐藏进程中的模块绕过IceSword的检测的疑惑
6661
[求助]PEview查看image base同windbg查看的image base不同
5109
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
返回
顶部