阅读:2559回复:19
想请教高人一个问题,做过irp拦截的进来一下好吗?
前一段时间做了个程序要拦截IRP,当时是使用的方法是改变了Dispath函数指针,但总觉得这种方法不太好。后来考虑了一下IRPTRACE,证明他用的不是这种方法。想了一下就只能是hook IoCallDriver这些函数了。但从没听说过这些服务也可以Hook,所以想请教一下,还有其他的好点的办法拦截IRP吗?
|
|
|
沙发#
发布于:2005-01-14 14:51
前一段时间做了个程序要拦截IRP,当时是使用的方法是改变了Dispath函数指针,但总觉得这种方法不太好。后来考虑了一下IRPTRACE,证明他用的不是这种方法。想了一下就只能是hook IoCallDriver这些函数了。但从没听说过这些服务也可以Hook,所以想请教一下,还有其他的好点的办法拦截IRP吗? 建议做Filter方式 |
|
|
板凳#
发布于:2005-01-14 15:24
写个Filter Driver就可以了。
你的目的什么,要拦截哪些IRP? |
|
|
地板#
发布于:2005-01-14 15:50
我估计二位都理解错了,楼主的意思是拦截所有IRP的方法
|
|
|
地下室#
发布于:2005-01-14 21:46
我估计二位都理解错了,楼主的意思是拦截所有IRP的方法 不是人家理解错了而是你理解错了。 |
|
|
5楼#
发布于:2005-01-15 13:47
拦截所有irp,难到要filter所有device?从IoCallDriver应该是最简便的。
我也想知道该如何做。 :mad: |
|
6楼#
发布于:2005-01-15 19:47
不好意思,我说的不清楚,我的意思是想像irptrace那样拦截所有的irp.
|
|
|
7楼#
发布于:2005-01-15 23:18
Upper filter driver, you will get control to all IRPs,
switch (irp->minorfunction) { case 1: ... IoSetcompletionRoutine(); return IoCallDriver() } |
|
8楼#
发布于:2005-01-17 15:58
Upper filter driver, you will get control to all IRPs, Which driver does your upper filter driver build on? |
|
|
9楼#
发布于:2005-01-18 08:29
先想清楚要拦截什么样的irp,然后做相应的device filter。
IoCallDriver可以绕过去,而filter可以做的很难绕过去。 还是做filter好觉得。 |
|
10楼#
发布于:2005-01-18 09:41
device filter做过了
后来对irptrace停敢兴趣,想弄一个 |
|
|
11楼#
发布于:2005-01-18 17:29
关注
|
|
|
12楼#
发布于:2005-01-19 08:31
理论上是对任何driver 都可以.只要改动以下inf文件.使windows在安装driver的时候同时安装filter driver
|
|
13楼#
发布于:2005-01-19 10:23
理论上是对任何driver 都可以.只要改动以下inf文件.使windows在安装driver的时候同时安装filter driver 太复杂了,每种设备驱动难道都得做一个??? |
|
|
14楼#
发布于:2005-01-19 14:41
[quote]理论上是对任何driver 都可以.只要改动以下inf文件.使windows在安装driver的时候同时安装filter driver 太复杂了,每种设备驱动难道都得做一个??? [/quote] 但可以动态Filter到某个设备, 论坛中的一位(是某个版的斑竹,不记得了)就做了一个,试用版只能拦截20(具体数字不很清楚了,软件名称也忘记了)个IRP |
|
|
15楼#
发布于:2005-01-19 17:23
程序很多,不过有现成代码的不多,懒得反汇编了,哪位能提供一个???
|
|
|
16楼#
发布于:2005-01-19 17:29
关注中
[编辑 - 1/19/05 by paladinii] |
|
|
17楼#
发布于:2005-01-19 19:17
前一段时间做了个程序要拦截IRP,当时是使用的方法是改变了Dispath函数指针,但总觉得这种方法不太好。后来考虑了一下IRPTRACE,证明他用的不是这种方法。想了一下就只能是hook IoCallDriver这些函数了。但从没听说过这些服务也可以Hook,所以想请教一下,还有其他的好点的办法拦截IRP吗? 呵呵~~~~你的想法完全正确,加10分~~~ 只不过,要想hook这些native api,得玩点技巧,还得多耗点时间 :D |
|
|
18楼#
发布于:2005-01-20 10:17
[quote]前一段时间做了个程序要拦截IRP,当时是使用的方法是改变了Dispath函数指针,但总觉得这种方法不太好。后来考虑了一下IRPTRACE,证明他用的不是这种方法。想了一下就只能是hook IoCallDriver这些函数了。但从没听说过这些服务也可以Hook,所以想请教一下,还有其他的好点的办法拦截IRP吗? 呵呵~~~~你的想法完全正确,加10分~~~ 只不过,要想hook这些native api,得玩点技巧,还得多耗点时间 :D [/quote] 替换服务分发表,或修改该native api函数的入口 |
|
|
19楼#
发布于:2005-01-20 10:45
正在试验
先看看ntoskrn的PE导出部分是不是dll一样 iocalldriver先是调用IofCalldriver,然后IofCallDriver干了一点点工作(不知干了什么),然后IocallDriver就直接调用Dispatch 函数了。 不过这两天不想干,有结果了告诉大家 谢谢这么多人关注 :D |
|
|