首页
社区
课程
招聘
[旧帖] [求助]用户API与原生API之间有对应关系吗? 0.00雪花
发表于: 2015-6-8 16:57 1610

[旧帖] [求助]用户API与原生API之间有对应关系吗? 0.00雪花

2015-6-8 16:57
1610
根据维基百科的解释http://zh.wikipedia.org/zh-cn/Native_API, native api 是用来给系统内部使用的,因此我理解是否比用户api相对更加安全和难以劫持hook,之前做过提取系统的api调用以分析代码行为,现在我想转到native api上来,只是不知道常见的用户api函数是否都有对应的native api?此外,是否windows用户api函数只是提供了对native  api的一个打包,最终都要由系统调用native api来实现user api的功能?最后,ntoskrnl.exe和ntdll.dll之间的关系是什么?我通过denpendency观察他们的导出函数,貌似ntoskrnl.exe的Zw和Nt开头的函数在ntdll.dll中都有对应项,但其他项则不完全有对应关系。还请高人指教

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ntdll及其调用者(比如user32/kernel32)是在用户空间,ntoskrnl是在系统空间。
事实上没有什么api是不能拦截的,只是用户空间的比较容易拦截,系统空间的要困难点(特别是有补丁管理的系统,一拦截就蓝屏)。
一般人在用户态下拦截的话,一般都会对ntdll下手。所以只要有人愿意拦截,就没有所谓的“更安全一点”,反而调用起来更麻烦。
至于Zw和Nt的联系,最简单的说法就是用户模式下没区别,系统模式中Zw检查参数是否合理之后调用Nt。
在ntdll中(Zw/Nt)是系统函数,在ntoskrnl中也有(Zw/Nt),有些人称之为服务例程。调用顺序是函数最终会调用例程。这些东西在百度上一搜一大把。
2015-6-11 15:34
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢回答
2015-6-11 23:09
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
服务号表一般是直接从ntdll.dll里导出来的,一般都这么做,不同的版本,同一API,服务号是不一样的。
2015-6-12 04:46
0
游客
登录 | 注册 方可回帖
返回
//