SSDT结构简记
来源:互联网 发布:山东省卫生网络直报 编辑:程序博客网 时间:2024/06/05 14:30
SSDT的全称是System Services DescriptorTable,系统服务描述符表 在ntoskrnl.exe导出KeServiceDescriptorTable
typedefstructServiceDescriptorTable{
打开双击调试
dd
80553fa0
80553fb0
80553fc0
80553fd0
80553fe0
80553ff0
80554000
80554010
第一列显示的时内存地址,也就是KeServiceDescriptorTable
加黑的那个就是这个结构体的第一个值,也就是ServiceTableBase的值,这里存放SSDT的表项
dd
80502b8c
80502b9c
80502bac
80502bbc
80502bcc
80502bdc
80502bec
80502bfc
这里就是表项了..
命令ddpoi[KeServiceDescriptorTable
80502bd0
这个是查看序号17的值,0n表示17是十进制表示,l 1表示只列出一个
这个17嘛就是索引号了。。
如何获取每个函数的索引号?(一般来说XP系统的索引号都不会变)
1.使用KD工具直接查看。
2.使用OD查看传入EAX的值就是索引号。比如openprocess就是7A=122 ZwOpenProcess
3.windbg直接u
804ff720b87a000000
804ff725 8d542404
804ff729 9c
804ff72a 6a08
804ff72ce850ed0300
804ff731 c21000
nt!ZwOpenProcessToken:
804ff734b87b000000
804ff739 8d542404
NTKERNELAPI PVOID MmGetSystemRoutineAddress( IN PUNICODE_STRING SystemRoutineName );
代码
UNICODE_STRING Old_NtOpenProcess;
ULONG Old_Addr;
Old_Addr=(ULONG)MmGetSystemRoutineAddress(&Old_NtOpenProcess);//取得NtOpenProcess的地址
KdPrint(("取得原函数NtOpenProcess的值为 %x",Old_Addr));
如何获取当前的SSDT中的地址?
RtlInitUnicodeString(&Old_NtOpenProcess,L"NtOpenProcess");//当然
NtOpenProcess一定是一个到处函数
代码
- SSDT结构简记
- SSDT结构
- SSDT
- SSDT
- SSDT
- SSDT
- SSDT
- SSDT
- SSDT 结构体 方便反汇编
- 32位的SSDT表结构浅析
- SSDT表结构的深入学习
- 第四章 结构化分析简记
- 简记
- 简记
- 简记
- 简记
- 简记
- SSDT hook技术中KeServiceDescriptorTable 结构及获取
- GPSTK日志五 TimeTag
- 怎样成为一个黑客(翻译自wikihow上的一篇文章)
- 写博客的重要性
- Android 应用中TCP 初步探索?
- Android开发者必知的开发资源
- SSDT结构简记
- Ubuntu软件安装与卸载
- poj 3345 Bribing FIPA[树形dp+背包]
- C#调用存储过程操作oracle数据库中的表
- Windows内核新手上路2——挂钩shadow SSDT
- ZOJ 3644 Kitty's Game(状态简化 & DP)
- Windows内核新手上路3——挂钩KeUserModeCallBack
- 给PHP安装和开启curl扩展
- Win7共享XP不能访问的问题