查看: 6215|回复: 22
收起左侧

[讨论] XueTr部分概念请教

[复制链接]
穿越星空
发表于 2009-6-19 15:07:01 | 显示全部楼层 |阅读模式
  XueTr的钩子部分检测8个内容,我想请教一下我内核钩子和Object钩子不懂,请问这是什么意思?还有,这么多钩子之间相互有什么关系啊?SSDT和Shadow SSDT本身不就是内核的吗?消息钩子是不是也都在应用层的?
  最好有人能够写下简明教程。
  本论坛《什么是全局钩子》第11楼有如下回答,不过还是不懂:
  (1)object hook:一些内核对象有相关联的处理例程,当执行某操作时会调用相关的例程,这些例程可以被替换。
  (2)ssdt hook:所有内核提供给用户层程序使用的API的编号和地址放在一块内存中,称为SSDT表,修改其中的地址就可以hook相应的API。
  (3)inline-hook:直接在代码中加入跳转执行自己的hook程序。
  (4)idt hook:IDT是中断描述表,可以替换其中的中断处理程序。
  (5)IRP hook:IRP是 I/O request packets,驱动程序中有一系列分发例程来处理请求,这些例程保存在驱动设备对象的数据结构中的一个表中,也很容易替换。
  (6)SYSENTER hook:SYSENTER指令是用户层进入内核的专用指令(XP以前使用INT2E),这个指令在内核中有一个对应的处理例程。
  (7)IAT HOOK:IAT是可执行文件的导入表,记录可执行文件使用的其它DLL中的函数,通过替换IAT表中的函数地址,可以hook相应DLL中的函数调用。
  (8)EAT HOOK:EAT是可执行文件的导出表,记录DLL中可供其他程序使用的函数,可执行文件装载时会使用相应DLL的EAT表来初始化IAT表,通过替换EAT表中的函数地址,就可以使依赖于本DLL的程序得到一个假的地址。

  多谢各位的指教,部分坛友的回复我做了回复,其他的有些是我没看懂,所以不知道该怎么回复。
  越来越感觉到,这好像是一个HOOK的分类问题。

[ 本帖最后由 穿越星空 于 2009-6-21 10:36 编辑 ]
dl123100
发表于 2009-6-19 16:15:35 | 显示全部楼层
XueTr的Kernel hook检测的是内核态的inline hook以及iat/eat hook。
Object钩子检测的是ObjectType hook,非广义的object hook。
至于ssdt 和shadow ssdt hook,为便于查看对应的function table单独列出。

评分

参与人数 1经验 +3 收起 理由
tawny2008 + 3 感谢解答

查看全部评分

dl123100
发表于 2009-6-19 16:19:26 | 显示全部楼层
顺便提一下,毛豆帖那帖提到的全局钩子一般指global windows hook,属于应用层。

评分

参与人数 1经验 +2 收起 理由
tawny2008 + 2 感谢解答

查看全部评分

xxyy7171
发表于 2009-6-19 16:47:27 | 显示全部楼层
说的好是好 但是能不能 通俗点
lrlssrf
发表于 2009-6-19 20:39:39 | 显示全部楼层
我通俗说点,有助于简单理解,但不科学吧,见笑了。正常情况下一个简单的请求都是层层传递,由高层到低层,就像你来到服务大厅,你要干什么事,你要请别人去完成。这些服务人员正常情况下都是系统提供的,可是非正常情况你到大厅好见到的导航表(ssdt,shadow ssdt)都被别人替换了,甚至服务人也替换了,你说你能得到正确结果吗?所以你看这些钩子的时候关键就要看“当前函数所在模块”是不是系统原有的文件,也就是导航图、服务员是不是原有,如果不是你一般就要恢复了。ssdt,shadow ssdt,fsd,内核钩子(看“挂钩位置”),objiect都可以这样理解。至于服务员的名称(函数名称)是什么,他具体起什么用,那是要慢慢理解的,现在正常的防护软件都喜欢挂钩,你也要知道。

评分

参与人数 1经验 +5 收起 理由
tawny2008 + 5 感谢解答:)

查看全部评分

lrlssrf
发表于 2009-6-19 20:44:07 | 显示全部楼层
另外“消息钩子”和“系统回调”和以上又有点区别,通俗讲就是服务员干完事,但把结果返回给你之前,有种机制可以让他们在你之前得到这个结果,所以你要看那些处理是系统的处理(进程路径),那些不是,把不是的那些你要卸载掉
挪威的冬天
发表于 2009-6-19 21:47:25 | 显示全部楼层
SSDT hook 一般特指对 SSDT 的修改

实际上对 SSDT 内的例程做 inline hook 和改 SSDT 没太多两样, 多跳一次而已

有些人也将此归属在 SSDT hook 里面, 但一般貌似都不那么认为...

至于所谓内核层, 实际还存在各级内核函数转发和调用, 并不是进入内核层就了事了

所以 SSDT 并不代表全部

评分

参与人数 1经验 +2 收起 理由
tawny2008 + 2 感谢解答

查看全部评分

tawny2008
发表于 2009-6-19 21:59:01 | 显示全部楼层
不管ssdt还是其它都是涉及到内核的调用,在这里回答不可能可以简单地就明白了,如果想通俗点理解的话,狙剑作者的疱丁解马系列教程写得不错
李红
发表于 2009-6-19 22:54:57 | 显示全部楼层
先学学,这个不懂
yumiao0160
发表于 2009-6-19 23:48:38 | 显示全部楼层
要是有典型样本配合行为分析的实例教程就更好了,庖丁解马侧重原理,实例不算丰富,可考虑再看一下版区内相关的手杀经验。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-12-24 21:15 , Processed in 0.117079 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表