threebags
驱动牛犊
驱动牛犊
  • 注册日期2004-07-01
  • 最后登录2012-04-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:2878回复:6

为什么我获取当前进程名总是返回csrss.exe呢?

楼主#
更多 发布于:2005-06-16 15:22
为什么我获取当前进程名总是返回csrss.exe呢?代码如下:(出于filemon):
ULONG FilemonGetProcessNameOffset()
{
PEPROCESS curproc;
int i;

curproc = PsGetCurrentProcess();

//
// Scan for 12KB, hoping the KPEB never grows that big!
//
for( i = 0; i < 3*PAGE_SIZE; i++ ) {

if( !strncmp( SYSNAME, (PCHAR) curproc + i, strlen(SYSNAME) )) {

return i;
}
}

//
// Name not found - oh, well
//
return 0;
}


PCHAR FilemonGetProcess( PCHAR Name )
{
#if GETPROCESS
PEPROCESS curproc;
char *nameptr;
ULONG i;
KIRQL oldirql;

//
// We only do this if we determined the process name offset
//
if( ProcessNameOffset ) {

//
// Get a pointer to the current process block
//
curproc = PsGetCurrentProcess(); //curproc = IoGetCurrentProcess();


//
// Dig into it to extract the name
//
nameptr = (PCHAR) curproc + ProcessNameOffset;

//DbgPrint((\"Ctrl2cap: nameptr:%s!\\n\",nameptr));

strncpy( Name, nameptr, NT_PROCNAMELEN );

//
// Terminate in case process name overflowed
//
Name[NT_PROCNAMELEN] = 0;

//DbgPrint((\"Ctrl2cap: Name:%s &&&!\\n\",Name));

return Name;

} else {

strcpy( Name, \"???\" );

return Name;
}

#else

//
// We\'re not getting names, so just return something
//
strcpy( Name, \"??\" );

return Name;
#endif
}
我用DbgView看了一下,不管我在哪个程序中敲键盘,这儿返回的Name全是csrss.exe,真是奇怪!!!
请大家指教!!!
abcd0106
驱动牛犊
驱动牛犊
  • 注册日期2007-02-21
  • 最后登录2009-01-05
  • 粉丝0
  • 关注0
  • 积分211分
  • 威望32点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-02-26 16:30
在我机器上是这个“System”,比较奇怪
disahacker
驱动牛犊
驱动牛犊
  • 注册日期2008-11-11
  • 最后登录2013-05-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望201点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-09-08 13:00
因为csrss.exe有一个一直监听键盘的输入
achor
驱动牛犊
驱动牛犊
  • 注册日期2009-07-25
  • 最后登录2010-07-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-09-12 21:51
键盘驱动的使用者是线程 win32k!RawInputThread 。线程 win32k!RawInputThread 的进程是 csrss.exe

这是网上搜索的结果,但具体该线程如何将获取的键盘数据转发给各不同进程好像都没怎么提到,还有对键盘设备堆栈顶端设备对象的IPR_MJ_READ这个请求能否和一指定的进程关联起来,有哪位高手能指点下吗?
toyourheart0602
驱动牛犊
驱动牛犊
  • 注册日期2008-11-04
  • 最后登录2011-12-13
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望201点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-10-20 16:12
我觉得这是创建进程啊,
weolar
驱动牛犊
驱动牛犊
  • 注册日期2007-05-14
  • 最后登录2012-11-30
  • 粉丝1
  • 关注0
  • 积分48分
  • 威望445点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分1分
5楼#
发布于:2010-03-15 12:52
RawInputThread 在win2k的代码里有。通过它内部维护的数据结构,大概找当前鼠标所在焦点发送消息的,当然这只是最简单情况。
hudson0201
驱动牛犊
驱动牛犊
  • 注册日期2010-03-15
  • 最后登录2010-03-31
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2010-03-15 21:59
你在哪里调用啊,我在IRP_MJ_CREATE里调是没有问题的
游客

返回顶部