首先他们都是微软未公开的函数,之所以未公开主要是因为这些函数大部分功能太强大了,把他们公开会让一些别有用心的人利用。9x下的我不知道,NT(含2000/xp)下你可以参考《Windows NT Native API》,他们中的大部分函数几乎就从来没有变过。而几乎所有从Kenerl.dll中引出的Win32API,都是通过调用的Native API(NTDLL.DLL中导出)实现系统调用的。举一个例子:NtQuerySystemInformation 这个函数就强大到可以查询所有的系统信息,使用时需要用户拥有相当高的访问权限。in ring3:
lkd> ? ntdll!ZwOpenProcess
Evaluate e­xpression_r: 2089999739 = 7c92dd7b
lkd> ? ntdll!NtOpenProcess
Evaluate e­xpression_r: 2089999739 = 7c92dd7b用dependency也可看到。可以看到,在ntdll中,ZwOpenProcess和NtOpenProcess其实是同一个函数,只不过拥有两个名称而已。也就是说,在ring3环境中,Zw***系列函数和Nt***系列函数无区别。复制代码
in ring0:
lkd> u nt!ZwOpenProcess
nt!ZwOpenProcess:
804de044 b87a000000    mov     eax,7Ah
804de049 8d542404       lea     edx,[esp+4]
804de04d 9c             pushfd
804de04e 6a08          push 8
804de050 e8dc150000    call nt!KiSystemService (804df631)
804de055 c21000        ret     10hlkd> u nt!NtOpenProcess
nt!NtOpenProcess:
80573d06 68c4000000    push 0C4h
80573d0b 6810b44e80    push offset nt!ObWatchHandles+0x25c (804eb410)
80573d10 e826f7f6ff    call nt!_SEH_prolog (804e343b)
80573d15 33f6          xor     esi,esi
80573d17 8975d4         mov     dword ptr [ebp-2Ch],esi
80573d1a 33c0          xor     eax,eax
80573d1c 8d7dd8        lea     edi,[ebp-28h]
80573d1f ab             stos dword ptr es:[edi]
复制代码可以看得出,ZwOpenProcess函数很短,首先把0x7a(NtOpenProcess的服务号)存入eax,然后做一些保存现场的工作即KiSystemService——这个函数根据eax中的service id在SSDT中查找相应的系统服务,然后调用之。而NtOpenProcess函数很长(反汇编结果只是一部分),事实上,NtOpenProcess便是真正执行打开进程操作的函数(在r0中通常称为服务,或例程),所以,若在驱动中直接调用Nt系列函数,是不会经过SSDT的,也就不会被SSDT HOOK所拦截。简单总结如下:R3下无论如何调用,均无法绕过SSDT HOOK,R0下调用Nt*可以绕过SSDT HOOK。rtl** 函数是windows ddk提供的编写驱动的函数。我的总结:由以上反汇编Zw***可知,Zw***代码内部是通过SSDT中的对应Nt***索引号查找到真正Nt***执行代码的入口地址。 大多数win32的api函数都是包装了这些zwxxx api和ntxxx api实现的。 在用户模式下,这两种形式的本机api是相同的,只是ntdll.dll中相同入口点的两个不同符号。   在内核模式下,代码依靠ntoskrnl.exe来连接,不再是ntdll.dll。这是,zwxxx的函数入口点含有来自于ntdll.dll的一份拷贝。ntxxx的函数入口点则含有系统服务的实际实现。

Nt**、Zw**和Rtl** 开头的函数介绍相关推荐

  1. Windows API 理解----Nt* Zw*

    在你要理解Zw和Nt 系列API时,你首先要知道一点,那就是系统调用.什么是系统调用呢? 系统调用:操作系统为应用程序提供的可被调用的一组函数,也叫"System Call". 从 ...

  2. 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

     1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端 ...

  3. 0-C相关01:NSlog函数介绍。

      NSlog()函数介绍: 首先:NSlog()函数是cocoa的框架中提供的一个方法: 下图中最上方是它在Xcode中的路径: : 同样都是输出函数.下边我们来看一下,在O-C中NSlog()和在 ...

  4. (转)postgis常用函数介绍(一)

    http://blog.csdn.net/gisshixisheng/article/details/47701237 概述: 在进行地理信息系统开发的过程中,常用的空间数据库有esri的sde,po ...

  5. ClickHouse函数介绍

    ClickHouse函数介绍 ClickHouse中至少存在两种类型的函数 :常规函数和聚合函数. 常规函数的工作就像分别为每一行执行一次函数计算一样(对于每一行,函数的结果不依赖于其他行). 聚合函 ...

  6. C语言函数大全-- m 开头的函数(1)

    C语言函数大全 本篇介绍C语言函数大全-- m 开头的函数 1. malloc 1.1 函数说明 函数声明 函数功能 void *malloc(size_t size); 用于动态分配内存 参数: s ...

  7. C语言函数大全-- q 开头的函数

    C语言函数大全 本篇介绍C语言函数大全-- q 开头的函数 1. qsort 1.1 函数说明 函数声明 函数功能 void qsort(void *base, size_t nmemb, size_ ...

  8. GaussDB数据库基础函数介绍-上

    目录 一.函数在数据库中的作用 二.GaussDB常用基础函数介绍与示例 1.数字操作函数 2.时间和日期处理函数 3.类型转换函数 4.数组函数 5.范围函数 6.窗口函数 7.聚集函数 8.安全函 ...

  9. C语言函数大全-- s 开头的函数(1)

    C语言函数大全 本篇介绍C语言函数大全-- s 开头的函数(1) 1. sbrk 1.1 函数说明 函数声明 函数功能 void *sbrk(intptr_t increment); 它是一个 Uni ...

最新文章

  1. iOS开发网络篇—GET请求和POST请求
  2. 需要在Emulator上模拟来电 效果
  3. reduce_sum()中的reduction_indices
  4. 【收藏】在QGIS中导入GOOGLE、BING等地图和卫星影像(插件方式和XYZ方式)
  5. centos7公司内网环境搭建集群性能测试环境(ip+域名部署)
  6. html5+css3网页开发实战精解,HTML5+CSS3开发实战
  7. 今年暑假不AC-贪心
  8. 百度地图API--百度地图底色选择
  9. java String类
  10. 设置 CSDN 博文里代码块的颜色
  11. opendir函数和readdir函数内涵及用法
  12. bootstrapValidator.js文件里的提示语:设置为中文
  13. debian9.6安装virtualbox
  14. linux钓鱼邮件,钓鱼邮件传播勒索病毒再升级,不落地加大查杀难度
  15. 微软语音包的安装及使用 Microsoft Speech SDK
  16. JVM致命错误日志(hs_err_pid.log)解读
  17. AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘
  18. Pycharm下载、安装、配置及校验 — 全程图文详细教程
  19. 设计模式之工厂模式,史上最强,不服来辩!
  20. 隔板法详解(各种方法)

热门文章

  1. 网关支付,代付,代扣,协议支付,账户支付,快捷支付的概念是什么?
  2. C++ 单元测试工具 Catch
  3. 【稳定性day10】美团MySQL的高可用架构 - 对标业内的一些解决方案
  4. Debug调试工具的使用
  5. BB10 Cascades Beta3已经发布!
  6. 转载别人下载资源神器
  7. 紫光展锐的春天来了吗?
  8. 李白计算机乐谱,天谕手游李白乐谱代码是什么-天谕手游李白乐谱代码分享_快吧手游...
  9. python数字排序_python数字排序
  10. Internet起源