dlmufox
驱动牛犊
驱动牛犊
  • 注册日期2003-10-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2345回复:6

在tdi或者ndis能不能得到是那个进程发送的irp

楼主#
更多 发布于:2004-01-01 01:26
最近在学习的过程中有一个疑问,也可以说是内核编程的疑问,当一个应用程序发出发包请求,程序从用户空间转换到内核空间执行tdi或者ndis,我看到的书上说,此时驱动程序是工作在任意的进程上下文中的那么此时如果调用psgetcurrentprocess是否得到的进程也许不是实际发出发包请求的进程?

如果是这样的话,那么那些防火墙软件又是如何实现检测到当前是那个程序在发包呢?对了,还有tdiview也可以看到是那个程序在发包

谢谢了!

最新喜欢:

hunterforpighunter...
dlmufox
驱动牛犊
驱动牛犊
  • 注册日期2003-10-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-01-01 17:43
ding
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
板凳#
发布于:2004-01-01 20:46
在TDI可以得到当前进程信息,
ndis发包的时候已经没有进程上下文了。
dlmufox
驱动牛犊
驱动牛犊
  • 注册日期2003-10-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-01 21:09
大侠能不能具体解释一下原因呀?还是msdn上提到过

小弟我确实没看见呀!谢谢了
shuangsy
驱动牛犊
驱动牛犊
  • 注册日期2004-03-15
  • 最后登录2018-05-26
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-07-31 10:58
你这个问题我也遇到了。

我经过实验, 得到了一个事实。
在TDI层中,IRQL总是PASSIVE_LEVEl。
这时是可以调用PsGetCurrentProcess函数的。
而在NDIS层中,IRQL有时在PASSIVE_LEVEL,
有时在DISPATCH_LEVEL或其它中断级,
这时, 根据NTDDK的说明,
PsGetCurrentProcess函数就会有时可能执行,
有时不能执行了。

这样的结果就是,在NDIS层中,用户不能总是得到当前的进程名。
以德服人
lixiangying
驱动牛犊
驱动牛犊
  • 注册日期2002-05-03
  • 最后登录2007-09-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-18 11:08
tdi 中可以用psgetcurrentprocessID后返回应用层查询得到其完整路径。而psgetcurrentprocessID可以工作在任意IRQL.
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-08-20 18:28
ndis层已经没有进程上下文,即使psgetcurrentprocessID成功,也只是返回系统线程的id,如果要得到进程名,可以在tdi层,不查询win32也可以得到进程的全路径,这个可以在网上搜一下,有代码。
游客

返回顶部