首页
社区
课程
招聘
未解决 [求助] printk导致内核崩溃
发表于: 2020-3-12 17:42 4079

未解决 [求助] printk导致内核崩溃

2020-3-12 17:42
4079

asmlinkage long my_sys_openat(int dfd, const char __user *filename, int flags, umode_t mode){
    if(current->comm != NULL && strstr(name, current->comm))
    {
        printk(KERN_INFO "fuck kernel: sys_openat(%d, %s, %d, %d)\n", dfd, filename, flags, mode); //单独这条printk崩溃
        printk(KERN_INFO "fuck kernel: sys_openat(%d, %d, %d)\n", dfd, flags, mode); //单独这条printk可以正常输出
        
        ... //随便写点代码
        printk(KERN_INFO "fuck kernel: sys_openat(%d, %s, %d, %d)\n", dfd, filename, flags, mode); //正常
    }
    return sys_openat(dfd, filename, flags, mode);
}
请求大佬们帮忙看下:
为啥函数体单独写

printk(KERN_INFO "fuck kernel: sys_openat(%d, %s, %d, %d)\n", dfd, filename, flags, mode);

这条语句,内核输出一部分就崩溃了呀。奇怪的是这条代码上面随便加点东西有可以正常输出了。


单独 printk(KERN_INFO "fuck kernel: sys_openat(%s)\n", filename); 这条语句也会直接崩溃,怀疑是filename取到非法值了。


但,后面我自己封装了一个获取字符串的函数,可以正常获取打印,并没有取到非法值,就是直接printk的时候不行,很是不解,求大佬们解答下,谢谢。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 14659
活跃值: (17754)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
尝试一些格式化字符串,随便写点东西,看看程序还是不是正常运行的
2020-3-12 18:20
0
雪    币: 110
活跃值: (730)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
pureGavin 尝试一些格式化字符串,随便写点东西,看看程序还是不是正常运行的
打印常规字符串可以正常工作,现在sprintf把filename格式化到buffer中,然后再printk buffer可以正常工作,算是迂回解决了问题,虽然不知道直接printk为啥内核会oops
2020-3-12 19:42
1
雪    币: 14659
活跃值: (17754)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
4
yzlmars 打印常规字符串可以正常工作,现在sprintf把filename格式化到buffer中,然后再printk buffer可以正常工作,算是迂回解决了问题,虽然不知道直接printk为啥内核会oops[ ...
我说的格式化字符串是指:%p,%n;之类的格式化字符串漏洞
2020-3-13 01:04
0
雪    币: 110
活跃值: (730)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
pureGavin 我说的格式化字符串是指:%p,%n;之类的格式化字符串漏洞
%p,%n均可以正常工作,%p输出结果均为00000000,%n输出正常,我的内核是64位内核,换成%llx可以正常输出字符串指针值,%p无法输出正常指针值均为00000000
2020-3-13 08:13
0
雪    币: 14659
活跃值: (17754)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
6
yzlmars %p,%n均可以正常工作,%p输出结果均为00000000,%n输出正常,我的内核是64位内核,换成%llx可以正常输出字符串指针值,%p无法输出正常指针值均为00000000
问题可能是不能让%p和%n正常工作,而且%n并不是输出,而是任意地址写。。。。
2020-3-13 11:14
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
帮顶
2020-3-13 18:01
1
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
您好,问一下您是怎么封装的吗,我因为简单的加入了printk语句导致系统卡住进不去了,我猜测可能的原因是缓冲区溢出导致系统崩溃了,但不知道怎么解决
2023-5-19 23:07
0
游客
登录 | 注册 方可回帖
返回
//