当前位置: 技术问答>linux和unix
拦截 系统调用 老是不成功
来源: 互联网 发布时间:2016-04-25
本文导语: 获取sys_call_table这些都是成功的,但是就是替换系统后一直不成功,比如说这么一个简单的替换都成问题: static asmlinkage long hijack_mkdir(const char *pathname, int mode) { printk("%sn",pathname); return orig_mkdir(pathna...
获取sys_call_table这些都是成功的,但是就是替换系统后一直不成功,比如说这么一个简单的替换都成问题:
orig_mkdir是原系统调用,这个也能确定是对的,通过dmesg查看printk输出pathname信息是对的,但是orig_mkdir调用却说是pathname错误的文件地址,返回14(EFAULT 14 /* Bad address */) ,不知道各位能不能给点提示。
环境ubuntu 8.04 kernel 2.6.24
static asmlinkage long hijack_mkdir(const char *pathname, int mode)
{
printk("%sn",pathname);
return orig_mkdir(pathname, mode);
}
orig_mkdir是原系统调用,这个也能确定是对的,通过dmesg查看printk输出pathname信息是对的,但是orig_mkdir调用却说是pathname错误的文件地址,返回14(EFAULT 14 /* Bad address */) ,不知道各位能不能给点提示。
环境ubuntu 8.04 kernel 2.6.24
|
会不会跟这个关键字有关:asmlinkage?我说的是orig_mkdir,他应该也是asmlinkage的吧。
系统掉用对参数的传递方式有要求,用什么寄存器之类的,具体的我不记得了。所以如果orig_mkdir也用这样的关键字,会不会出问题?如果orig_mkdir的确用了asmlinkage方式,试试去掉。
系统掉用对参数的传递方式有要求,用什么寄存器之类的,具体的我不记得了。所以如果orig_mkdir也用这样的关键字,会不会出问题?如果orig_mkdir的确用了asmlinkage方式,试试去掉。
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。