- 论坛徽章:
- 0
|
我希望实现监控别人系统输入的功能,按照开源项目Sebek的说法可以直接hook sys_read
我就是这么做的
代码如下
asmlinkage ssize_t NewRead (unsigned int fd, char *buf, size_t count)
{
static unsigned int i = 0;
ssize_t nRes;
//----- run original sys_read....
nRes = pOldRead(fd, buf, count);
//----- check for error and interest
if(nRes < 1 )
{
goto OUT;
}
if(NULL!=pFile)
{
if(fd &&count>1)
{
memcpy(Buffer,buf,1023>count?count:1023);
Buffer[1023>count?count:1023]=0;
klib_fprintf(pFile,"%u :SysRead %u bytes: \"%s\" .\r\n",i,(unsigned long)count,Buffer);
i++;
}
}
OUT:
return nRes;
}
但是每次这个模块安装之后几秒钟必定挂掉
然后查看的输出信息很复杂
根本和用户输入无关
我想问
1 如何判断这个read函数调用的初始进程是谁
2 我的代码为什么会造成系统崩溃
第一次来这个论坛发贴
希望各位牛人多帮忙
btw klib_fprintf是我自己写的内核态写文件的函数代码 |
|