12
返回列表 发新帖
楼主: MarkovChain
收起左侧

[讨论] 一个系统函数能同时被两个不同的程序hook吗

[复制链接]
tawny2008
发表于 2009-10-14 22:25:58 | 显示全部楼层
记得疱丁解马教程有提到,SSDT表中同个函数不同字节错开确实可以HOOK,但因为每个工具HOOK的位置都没有统一标准,所以不同工具HOOK同一个函数的字节不同更容易导致蓝屏

在同一字节HOOK的情况下,前面的钩子会被替换成后一个钩子

3721和冰刃冲突是一个例子

[ 本帖最后由 tawny2008 于 2009-10-14 22:27 编辑 ]
mmzz2688
发表于 2009-10-14 22:28:48 | 显示全部楼层
原帖由 tawny2008 于 2009-10-14 22:25 发表
记得疱丁解马教程有提到,SSDT表中同个函数不同字节错开确实可以HOOK,但因为每个工具HOOK的位置都没有统一标准,所以不同工具HOOK同一个函数的字节不同更容易导致蓝屏

在同一字节HOOK的情况下,前面的钩子会被替 ...

没错,以前我把江民和毛豆v3一起安装时某次用ark工具检查发现毛豆部分hook已经废了...[:27:]
tawny2008
发表于 2009-10-14 22:32:08 | 显示全部楼层

回复 12楼 mmzz2688 的帖子

强悍的软件不要装两个
MarkovChain
 楼主| 发表于 2009-10-15 01:21:04 | 显示全部楼层

回复 12楼 mmzz2688 的帖子

那你的毛豆后来还能正常使用么?
相信不会有很多人把每个安软单独装,再去看下ssdt,然后依次把大部分安软的ssdt hook列出来,再看哪些不hook到一起,就用哪些。
很多人使用组合,同一个API被hook的几率肯定不小,但仍然有些“不冲突”的组合,两边都能“正常”使用,这是为什么呢?这就是这个问题的初衷,望赐教

[ 本帖最后由 MarkovChain 于 2009-10-15 01:22 编辑 ]
evilrabbit
发表于 2009-10-15 07:42:10 | 显示全部楼层

回复 14楼 MarkovChain 的帖子

好像是钩子链。
SONGLEI
发表于 2009-10-15 08:50:41 | 显示全部楼层

回复 14楼 MarkovChain 的帖子

理论上其实也存在不冲突的可能,有时连HIPS作者都说HOOK同一个函数的动作可以先给B软件过滤,再交给A软件过滤。

其实更多的是冲突的可能,在实际应用或测试中,发现的冲突的很多

正常的组合是纯扫描杀软和HIPS组合,毕竟不带主防的杀软HOOK得很少,冲突可能性很小。而HIPS可以说是大量HOOK,多的能达到40-50个,多HIPS冲突可能自然大很多。

PS: 我更加一知半解,来学习了解一下。说错了的话当我没说。

[ 本帖最后由 SONGLEI 于 2009-10-15 08:51 编辑 ]
Sysnap
发表于 2009-10-15 09:00:49 | 显示全部楼层
看是哪种HOOK类型了。。。
1 比如SSDT HOOK是可以的。。。你替换了表中的函数指针 ( 如果在你HOOK之前已经有人HOOK过, 那你保存的原来指针将是 别人的处理函数, 所以当你再HOOK后,想调用原来的函数时,实际还是调用了之前别人已安装HOOK的处理函数
2 INLINE HOOK。。。这个看情况,因为HOOK得地方可以不同, 那同一个函数就可以HOOK多次。。即使HOOK得地方相同。。只要做下简单判断处理,也可以再HOOK

   综上。。一个函数时可以被HOOK多次。。但可能造成 有些程序的HOOK得不到处理,比如你后HOOK,然后直接返回失败, 那之前安装的HOOK就得不到调用。。也许这是冲突的一个其中原因吧。。。当然还有其他原因

评分

参与人数 2经验 +10 人气 +1 收起 理由
tawny2008 + 10 感谢Sysnap解答:)
SONGLEI + 1 非常感谢!

查看全部评分

SONGLEI
发表于 2009-10-15 09:18:11 | 显示全部楼层

回复 17楼 Sysnap 的帖子

非常感谢技术解答!
这样的话,理论上可以不冲突,但实际上不同安软是不同的人做出来的,不可能做到彼此协调完全避免冲突,再说,多HOOK的软件装多了根本没有必要。
MarkovChain
 楼主| 发表于 2009-10-15 09:50:49 | 显示全部楼层
原帖由 Sysnap 于 2009-10-15 09:00 发表
看是哪种HOOK类型了。。。
1 比如SSDT HOOK是可以的。。。你替换了表中的函数指针 ( 如果在你HOOK之前已经有人HOOK过, 那你保存的原来指针将是 别人的处理函数, 所以当你再HOOK后,想调用原来的函数时,实际还是 ...


原来是指针的指针,应该是这么回事了,还是专业人士讲得清楚,豁然开朗,多谢Sysnap

也谢谢猫咪热心解答
FinalTheory
发表于 2009-10-15 20:52:52 | 显示全部楼层
来此学习了,谢谢。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-12-31 06:07 , Processed in 0.097554 second(s), 14 queries .

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

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