查看: 4488|回复: 19
收起左侧

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

[复制链接]
MarkovChain
发表于 2009-10-14 21:54:06 | 显示全部楼层 |阅读模式
如题 请说明理由
Beloved
发表于 2009-10-14 22:00:22 | 显示全部楼层
不可以吧、、、、、、

后面的 会 覆盖 前面的一个
tawny2008
发表于 2009-10-14 22:01:33 | 显示全部楼层
不能,一个萝卜一个坑,但为实现同个目的并不一定要HOOK同个函数
单身熟男 该用户已被删除
发表于 2009-10-14 22:04:36 | 显示全部楼层
现在有好几种说法。。
最后我们这些看贴的也晕了。。
有说后期的覆盖前期的
有说hook的优先级和hook顺序没关系
mmzz2688
发表于 2009-10-14 22:05:11 | 显示全部楼层
不可以,如果两个杀软都hook同一个函数出问题的可能性很大,要么重要功能残废,要么系统出现问题.
所以不推荐装n个杀软在自己的电脑上,当然在虚拟机内测试是可以的...
luoyou1988117
发表于 2009-10-14 22:10:11 | 显示全部楼层
不可以,会出问题
mmzz2688
发表于 2009-10-14 22:14:20 | 显示全部楼层
原帖由 单身熟男 于 2009-10-14 22:04 发表
现在有好几种说法。。
最后我们这些看贴的也晕了。。
有说后期的覆盖前期的
有说hook的优先级和hook顺序没关系

对于某些安软,hook系统相关函数的操作在操作系统内核加载后(加载NDIS.SYS和TCPIP.SYS等等)就开始了,所以存在冲突的可能性,严重的就是出现bsod(蓝屏死机)
windows系统服务在注册表的HKEY\LOCAL\MACHINE\SYSTEM\CurrentControlSet\Services下面其中一个键值:START的值,它是一个十六进制值.

其中一般对应的启动方式

                                   0 -自动优先级最高,会作为操作系统自身的服务加载,最先启动,比如NDIS.SYS
                                   1-自动优先级次之,但也是操作系统的关键服务 例如TCPIP.SYS
                                   2-自动启动,但是优先级稍低
                                   3-手动启动
                                   4-已禁用的启动方式
是有冲突的可能性的.

评分

参与人数 1人气 +1 收起 理由
单身熟男 + 1 很高深的样子。。。

查看全部评分

bugman
发表于 2009-10-14 22:16:11 | 显示全部楼层
比如,HOOK NtCreateProcessEx,前5个字节被软件一HOOK,第6字节到第10字节被软件二HOOK
0:000> u NtCreateProcessEx
ntdll!ZwCreateProcessEx:
7c92d15e b830000000      mov     eax,30h  //HOOK的回调地址,比如0x00401000
7c92d163 ba0003fe7f      mov     edx,offset SharedUserData!SystemCallStub (7ffe0300)  //HOOK的回调地址,比如0x00402000
7c92d168 ff12            call    dword ptr [edx]
7c92d16a c22400          ret     24h
7c92d16d 90              nop
ntdll!ZwCreateProfile:
7c92d16e b831000000      mov     eax,31h
7c92d173 ba0003fe7f      mov     edx,offset SharedUserData!SystemCallStub (7ffe0300)
7c92d178 ff12            call    dword ptr [edx]

0x00401000:
....
功能1
...
//执行完后,跳回
__asm
{
    mov eax,30h
    jmp 7c92d163h
}


0x00402000:
....
功能2
...
//执行完后,跳回
__asm
{
    mov edx,offset SharedUserData!SystemCallStub (7ffe0300)
    jmp 7c92d168
}

当然HOOK同1个函数造成系统不稳定的概率会大。一般都不会这么做。R0的话,更是如此。

评分

参与人数 2经验 +5 人气 +1 收起 理由
dl123100 + 1 竟然没人加RQ
tawny2008 + 5 感谢解答:)

查看全部评分

mmzz2688
发表于 2009-10-14 22:17:16 | 显示全部楼层
不可能你安装的杀软或其他安软所hook的函数没有一个不相同的,肯定多多少少有几个是相同的,这就会出现问题.
mmzz2688
发表于 2009-10-14 22:25:35 | 显示全部楼层
由于hook类型比较多,主要有以下几种:
object hook,ssdt hook,inline-hook,idt hook,irp hook,sysenter hook,iat hook,eat hook
有些软件采用比较ws的hook方式,有冲突难免.
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

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

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

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