SSDT hook学习资料以及总结问题

原创 2013年10月24日 19:27:23

很想把调试后的代码发出来,但是由于是在公司写的,在此就不贴出来了,不过根据下边的这些资料,聪明的你一定可以把原理弄懂并且整出来的。


SSDT hook 的一点 疑问->获取服务地址用一句话就搞定 了,还用写个函数用内联汇编?KeServiceDescriptorTable.ServiceTableBase[122]  http://www.mengwuji.net/forum.php?mod=viewthread&tid=655

Using SSDT HOOK To Hide Processes   http://www.2cto.com/kf/200904/37630.html
SSDT HOOK技术 进程保护(基础知识很详细深入浅出的解释,附加了代码,很赞~!~)     http://www.snert.swust.edu.cn/viewthread.php?tid=1383&extra=page%3D1
RootKit技术之一 SSDT(转)     http://blog.csdn.net/tianzhhy/article/details/6187761
SSDT HOOK编程      http://blog.csdn.net/tianzhhy/article/details/6191088
简单实现隐藏SSDT HOOK程序    http://www.yunsec.net/a/security/advanced/hacker/2010/0815/5373.html
【原创】SSDT Hook的妙用-对抗ring0 inline hook    http://bbs.pediy.com/archive/index.php?t-40832.html

【原创】必备绝技——hook大法( 中 )    http://bbs.pediy.com/showthread.php?t=42422&highlight=%E5%BF%85%E5%A4%87+%E5%A4%87%E7%BB%9D+%E7%BB%9D%E6%8A%80
【求助】请问如何理解KeServiceDescriptorTable.ServiceTableBase[*(PULONG)((PUCHAR)_function+1)]   http://bbs.pediy.com/archive/index.php?t-62843.html


收获:
把请求的系统函数索引号或者系统服务标志符装入到eax中,再把函数参数的地址装入到edx中
#pragma pack(1)   设置结构体对齐字节数     http://gaona021973.blog.163.com/blog/static/3735227200810103131555/
__declspec(dllexport) & __declspec(dllimport)    动态库DLL中函数的导入与导出声明    http://www.cnblogs.com/xd502djj/archive/2010/09/21/1832493.html   http://blog.csdn.net/mniwc/article/details/7993361
实现中遇到的比较郁闷的问题:
1:
extern "c" PSERVICE_DESCRIPTOR_TABLE    KeServiceDescriptorTable;
因为我是用的是C++,而KeServiceDescriptorTable是用C编译器编译的,所以想要找到KeServiceDescriptorTable的函数体,必须使用C编译器方式去寻找,否则始终寻找不到
2:#ifdef __cplusplus
extern
{}
在全局使用,以免出现编译问题导致的问题
3:PSERVICE_DESCRIPTOR_TABLE    KeServiceDescriptorTable;中的前者是指针形式:
typedef struct _SERVICE_DESCRIPTOR_TABLE
{
  PVOID   ServiceTableBase;
  PULONG  ServiceCounterTableBase;
  ULONG   NumberOfService;
  ULONG   ParamTableBase;
}SERVICE_DESCRIPTOR_TABLE,*PSERVICE_DESCRIPTOR_TABLE;

extern "c" PSERVICE_DESCRIPTOR_TABLE    KeServiceDescriptorTable;
这样就可以通过ID获取SSDT列表中函数的地址
ULONG  Address;

Address = (ULONG)KeServiceDescriptorTable->ServiceTableBase[122];//122为NtOpenProcess服务ID

4:在使用Windbg进行调试的时候,不要忘记了添加标志文件:

File-->SymBol File Path -->Browse找到准备导入的标志文件,-->Reload--->OK

DSDT/SSDT综合教程

原贴地址:http://www.tonymacx86.com/yosemite-laptop-support/152573-guide-patching-laptop-dsdt-ssdts.html ...
  • eastlhu
  • eastlhu
  • 2016年04月23日 17:49
  • 10593

SSDT

2、系统服务调度表SSDT及SSSDT Shadow 系统服务:由操作系统提供的一组函数(内核函数),API可以间接或者直接的调用系统服务。操作系统以动态链接库(DLL)的形式提供API。 SSD...
  • swanabin
  • swanabin
  • 2013年08月17日 12:31
  • 2331

【黑苹果教程】对笔记本的 DSDT/SSDT 打补丁

版权说明:本文章参考tonymacx86的Patching LAPTOP DSDT/SSDTs这篇文章, 如果需要转载,请注明原文地址: 概览为了让OS X的各个组件在你的笔记本上更好的运行,你...
  • wr132
  • wr132
  • 2017年01月31日 16:20
  • 22508

ssdt 入门

SSDT入门  下载 (22.7 KB)2010-5-2 11:15【图System Module Dependencies】揭示了系统各模块之间的依赖关系(有所简化)从图中可以看出,所有的Win32...
  • zhuerhua
  • zhuerhua
  • 2010年06月01日 19:58
  • 423

SSDT

2、系统服务调度表SSDT及SSSDT Shadow 系统服务:由操作系统提供的一组函数(内核函数),API可以间接或者直接的调用系统服务。操作系统以动态链接库(DLL)的形式提供API。 SSD...
  • A3630623
  • A3630623
  • 2013年09月22日 10:08
  • 970

SSDT表概念详解

SSDT 的全称是 System Services Descriptor Table,系统服务描述符表。 这个表就是一个把 Ring3 的 Win32 API 和 Ring0 的内核 API 联系起来...
  • QQ1084283172
  • QQ1084283172
  • 2015年06月25日 11:18
  • 1711

SSDT查看和恢复工具

  • 2010年07月01日 01:00
  • 136KB
  • 下载

Win64 驱动内核编程-18.SSDT

SSDT  学习资料:http://blog.csdn.net/zfdyq0/article/details/26515019  学习资料:WIN64内核编程基础 胡文亮      SSDT(...
  • u013761036
  • u013761036
  • 2017年03月19日 15:05
  • 713

Hook : SSDT Hook学习资料以及总结问题

SSDT hook 的一点 疑问->获取服务地址用一句话就搞定 了,还用写个函数用内联汇编?KeServiceDescriptorTable.ServiceTableBase[122]  http:/...
  • zhou191954
  • zhou191954
  • 2014年07月23日 14:15
  • 683

Win64 驱动内核编程-19.HOOK-SSDT

HOOK SSDT     在 WIN64 上 HOOK SSDT 和 UNHOOK SSDT 在原理上跟 WIN32 没什么不同,甚至说 HOOK 和 UNHOOK 在本质上也没有不同,都是在指定...
  • u013761036
  • u013761036
  • 2017年03月19日 15:16
  • 740
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSDT hook学习资料以及总结问题
举报原因:
原因补充:

(最多只允许输入30个字)