Windbg 查看SSDT表
SSDT HOOK 的原理其实非常简单,我们先实际看看KeServiceDescriptorTable是什么样的。
lkd> dd KeServiceDescriptorTable
8055ab80 804e3d20 00000000 0000011c 804d9f48
8055ab90 00000000 00000000 00000000 00000000
8055aba0 00000000 00000000 00000000 00000000
8055abb0 00000000 00000000 00000000 00000000
在windbg.exe中我们就看得比较清楚,KeServiceDescriptorTable中就只有第一项有数据,其他都是0。其中804e3d20就是
KeServiceDescriptorTable.ntoskrnel.ServiceTableBase,服务函数个数为0x11c个。我们再看看804e3d20地址里是什么东西:
lkd> dd 804e3d20
804e3d20 80587691 805716ef 8057ab71 80581b5c
804e3d30 80599ff7 80637b80 80639d05 80639d4e
804e3d40 8057741c 8064855b 80637347 80599539
804e3d50 8062f4ec 8057a98c 8059155e 8062661f
如上,80587691 805716ef 8057ab71 80581b5c 这些就是系统服务函数的地址了。比如当我们在ring3调用OpenProcess时,进入sysenter的ID是0x7A(XP SP2),然后系统查KeServiceDescriptorTable,大概是这样KeServiceDescriptorTable.ntoskrnel.ServiceTableBase(804e3d20) + 0x7A * 4 = 804E3F08,然后804E3F08 ->8057559e 这个就是OpenProcess系统服务函数所在,我们再跟踪看看:
lkd> u 8057559e
nt!NtOpenProcess:
8057559e 68c4000000 push 0C4h
805755a3 6860b54e80 push offset nt!ObReferenceObjectByPointer+0x127 (804eb560)
805755a8 e8e5e4f6ff call nt!InterlockedPushEntrySList+0x79 (804e3a92)
805755ad 33f6 xor esi,esi
原来8057559e就是NtOpenProcess函数所在的起始地址。
lkd> u nt!NtOpenProcess
最新文章
- Deconvolution Using Theano
- BZOJ 3639: Query on a tree VII
- gcc编译时头文件和库文件搜索路径
- 【转】设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
- pip报ssl错误解决
- 2016年11月19日 星期六 --出埃及记 Exodus 20:10
- C#调用Geocoding API进行地理编码与逆编码
- WPF与输入法冲突研究之二:汉字输入法会导致WPF程序的崩溃!
- iOS开发系列--打造自己的“美图秀秀”
- java major version(转)
- c#中如何跨线程调用windows窗体控件?
- easyui获取当前点击对象tabs的title
- Oracle 11g的安装
- LINUX 笔记-文本过滤
- 基于Fragment的插件化
- Spark FPGrowth (Frequent Pattern Mining)
- Python基础进程和线程
- python pyqt面板切换
- ELK + kafka 日志方案
- objective C, parse json时注意事项
热门文章
- 解决 Onenote 默认全角输入的一种解决办法(输入法已经设置为默认半角)
- C/C++ 无法解析的外部符号解决方案
- Delphi 数学函数:常用的几个数学函数(Power、Abs、Int、Trunc、Round、Frac、sqr、sqrt)
- hive中的lateral view 与 explode函数的使用
- NX二次开发-输入X向量Y向量输出一个3*3矩阵UF_MTX3_initialize
- Java-Class-C:org.springframework.web.client.RestTemplate
- HSE_VALUE 修改问题
- msSql Server 修复数据库
- Python匹马天下行之python基本语法
- <;Django>;一些小知识