注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

SSDT HOOK的兼容性问题  

2012-02-05 22:21:04|  分类: ring0相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        关于SSDT Hook,一种方法是采用硬编码,即采用固定的函数索引。对于不同的Ntoskrnl.exe,需要事先计算出索引值。这种方法较为安全一些,虽然比较麻烦。而且,对于重复SSDT Hook,基本上也是安全的,前提是,每个hook都别卸载,直至系统重启,否则,也会导致灾难性的后果。——大家应该尽量遵循这个“潜”规则,只有这样,才能互相不影响。

        另外一种方法是使用下面的两个宏:
#define SYSTEMSERVICE(_func) \
KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_func+1)]
#define SYSCALL_INDEX(_Function) *(PULONG)((PUCHAR)_Function+1)
 
        但是这种方法存在一定的问题。假设没有inline hook存在,那么,它可以正常运行。而如果有inline hook存在,
*(PULONG)((PUCHAR)_func+1)就不再是服务函数在SSDT中的索引了。这时候,还这样操作就会带来灾难性的后果。

        那么,有没有一种较为安全,又不那么麻烦的方法呢?方法是有的。一种方法是,我们可以通过分析Ntoskrnl.exe自身(从磁盘文件分析,而不是上面的内存方式分析),然后再使用上面的两个宏,从而基本上可以保证不受inline hook影响。

By:zhanyonhu

  评论这张
 
阅读(456)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016