Windows Hook和Dtrace的区别
上次在南京大学做讲座的时候被一个同学问了这么一个问题:Windows Hook和Dtrace有什么区别?起先我并不了解Hook,查阅了一些资料之后,总结如下:
1、在性能上:
Hook会严重影响系统性能,然而Dtrace基本上不会对系统性能有任何影响。
2、安全性:
Hook过多的干预到了系统内部,它可以对钩到的参数和消息进行监视、修改和控制,这样就造成了对系统安全的严重威胁。目前很多木马程序和病毒都是采用钩子来对系统进行攻击的。
Dtrace只是在系统内核中植入探针,通过激活探针来对系统状态进行查看,在Kernel和应用之间起到一个观察作用。它并没有权限去修改任何东西,换句话说,Dtrace的探针只是像一个摄像头一样只负责监控。
3、应用范围:
Hook目前只是在Windows中提供,而且仅可以在Windows中使用。而且Windows Hook只能提供14种类型的Hook。
Dtrace却在Solaris系统内拥有9万多个探针。可以查看任何系统信息。而且Dtrace目前已经开始被多个操作系统和应用程序所应用,它们通过将Dtrace移植来实现对系统和应用的出错。
4、连续性:
Hook其实是一种中断,它通过设置一个断点来获取数据,然后再将数据发送到窗口。
Dtrace没有任何断点,它是完全实施监控,对系统和应用没有任何干预。
具体的关于Windows Hook的内容可以查看:
http://www.quping.com/blog/article.asp?id=123
关于Dtrace的内容可以查看SDNChina的相关文章。
补充一点,Windows Hook常被病毒利用干坏事,Solaris DTrace常用于开发人员调试程序干好事。
发表于 Jerry Tao 在 2007年11月24日, 12:38 下午 CST #
3、应用范围:
Hook目前只是在Windows中提供,而且仅可以在Windows中使用。而且Windows Hook只能提供14种类型的Hook。
Dtrace却在Solaris系统内拥有9万多个探针。可以查看任何系统信息。而且Dtrace目前已经开始被多个操作系统和应用程序所应用,它们通过将Dtrace移植来实现对系统和应用的出错。
dtrace也只能在solaris里面用啊^_^
2、安全性:
hook是一项成熟的技术,本身提供给程序员参与到进程的方式。dtrace目前还没有被广泛研究,相信要用来做坏事还是很有可能的
其实,总的来说dtrace和hook好像不是完全针对一个目标而提出的技术吧,确实如tao zhen(?)所言,dtrace常被用来调试,和hook不是完全对等的位置。一家之言,实属表面理解,欢迎指正。
发表于 yang 在 2007年11月28日, 05:55 下午 CST #
Dtrace现在正在被很多软件所移植使用,而且很多Linux厂商也开始将Dtrace添加到其操作系统中。Dtrace的应用已经不仅仅局限于Solaris系统的监视了。
另外,人们总是有一个误区就是Hook比Dtrace成熟,或者说Hook比Dtrace广为人知才使得Hook被人用做干坏事。而是他们本身的机制就不同。Hook给与了使用者太多的能力,使他们可以进入进程修改消息的内容,然而Dtrace只是一个监视的作用,并没有给予使用者通过Dtrace修改的权利。打个比方,Hook好比在系统内放置了机器人,可以为所欲为,但是Dtrace只是放置了摄像头,只能查看。
发表于 Vincent Ding 在 2007年12月04日, 10:40 上午 CST #