Hook : SSDT Hook学习资料以及总结问题
2014-07-23 14:15
411 查看
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中函数的导入与导出声明 /article/4792717.html /article/8572343.html
实现中遇到的比较郁闷的问题:
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
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中函数的导入与导出声明 /article/4792717.html /article/8572343.html
实现中遇到的比较郁闷的问题:
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
相关文章推荐
- SSDT hook学习资料以及总结问题
- Hook :Inline Hook学习资料以及总结问题
- inline hook NtOpenProcess学习资料以及总结问题
- 【JAVA学习】总结classpath常见问题以及解决方法
- IOS学习日志---1:TableView下拉刷新以及各种失败问题总结
- hustoj相关学习资料以及一些问题的整理还有乱七八糟的东西
- 字符集编码以及java乱码问题学习总结
- dwz问题(本文主要是供个人学习成长之用,陈述的是本人在开发过程中遇到的几个小问题的总结,可能兼或插入一些网络资料)
- 2、dlib学习笔记--dlib介绍以及学习资料总结
- 记录自己学习心得以及工作中遇到问题的总结
- 学习struts2建bbs总结五:使用jquery+ajax验证用户名是否存在以及struts效验信息不断重复的问题
- WCF学习总结——什么是WCF以及用WCF解决什么问题
- 学习PHP的问题总结
- 关于字符集--总结,补遗以及问题
- JAVA基础学习总结---原码、补码、反码以及基本数据类型
- 学习总结资料
- Java 学习总结(可能是你从来没有考虑过的问题)
- 关于ORACLE的ora-12505报错以及连接问题的解决及相关资料
- .NET 7期同学面向对象学习中问题总结
- 学习Hibernate碰到的问题以及解决问题的方法(长期更新)