有没有什么方法对linux进程进行实时监控,包括进程的新建和删除。不用重新编译内核的。谢谢
回复 1# umdd0210将进程创建和删除的函数重写,在重写的函数中对进程的创建和删除进行实施监控;然后再写一个内核模块,将内核原来的函数替换为“jmp 新函数”
回复 2# 瀚海书香
将进程创建和删除的函数重写,不用重新编译内核吗? 是用系统调用的方法吗? 能不能说的再详细一点,我不是很清楚,谢谢。
回复 3# umdd0210看看这个链接应该就懂了http://www.ibm.com/developerworks/cn/linux/l-knldebug/
回复 5# 瀚海书香
嗯,明白了。 那请问,如果我替换do_fork()函数,如何获取将要创建的进程的进程名和进程ID呢?
回复 4# 瀚海书香
这种方法真不错。。。
我用你说的方法,替换了创建进程时要使用的set_task_comm函数,但是insmod之后系统就死机了。。。。。
知道原因么。。。。。
谢谢
本帖最后由 瀚海书香 于 2011-05-10 16:16 编辑
回复 8# umdd0210应该是你替换代码的问题吧。如果完全按照方法进行替换的话,是没有问题的。之前曾经用过这个方法,确定这个方法是可用的。假设要替换函数的地址 A,新函数的地址为B,一个全局变量数组C[5]。那么代码大体上如下:static void replacefunc(char *A,char *B){ char p[5]; memcpy(C,A,5); p[0]=‘\xe9’;//jmp code *(long*)&p[1]=(long)(B-A-5); lock_kernel(); memcpy(A,P,5); unlock_kernel();}
回复 9# 瀚海书香
我这个就是照着那个例程写的:
复制代码系统为red hat enterprise linux5 ,内核是2.6.18的
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(9)
回复 1# umdd0210
将进程创建和删除的函数重写,在重写的函数中对进程的创建和删除进行实施监控;然后再写一个内核模块,将内核原来的函数替换为“jmp 新函数”
回复 2# 瀚海书香
将进程创建和删除的函数重写,不用重新编译内核吗?
是用系统调用的方法吗?
能不能说的再详细一点,我不是很清楚,谢谢。
回复 3# umdd0210
看看这个链接应该就懂了
http://www.ibm.com/developerworks/cn/linux/l-knldebug/
回复 3# umdd0210
看看这个链接应该就懂了
http://www.ibm.com/developerworks/cn/linux/l-knldebug/
回复 5# 瀚海书香
嗯,明白了。
那请问,如果我替换do_fork()函数,如何获取将要创建的进程的进程名和进程ID呢?
回复 4# 瀚海书香
这种方法真不错。。。
回复 4# 瀚海书香
我用你说的方法,替换了创建进程时要使用的set_task_comm函数,但是insmod之后系统就死机了。。。。。
知道原因么。。。。。
谢谢
本帖最后由 瀚海书香 于 2011-05-10 16:16 编辑
回复 8# umdd0210
应该是你替换代码的问题吧。如果完全按照方法进行替换的话,是没有问题的。之前曾经用过这个方法,确定这个方法是可用的。
假设要替换函数的地址 A,新函数的地址为B,一个全局变量数组C[5]。那么代码大体上如下:
static void replacefunc(char *A,char *B)
{
char p[5];
memcpy(C,A,5);
p[0]=‘\xe9’;//jmp code
*(long*)&p[1]=(long)(B-A-5);
lock_kernel();
memcpy(A,P,5);
unlock_kernel();
}
回复 9# 瀚海书香
我这个就是照着那个例程写的:
复制代码系统为red hat enterprise linux5 ,内核是2.6.18的