什么是linux i686上的current_task?

时间:2016-02-14 10:22:42

标签: linux module task proc

我在ida pro上分析linux moudule。但我不知道来源中的current_task。这个moudule是proc程序,并在你设置的虚拟地址上运行linux命令

它是来源的一部分:

  v0 = mcount();
  v1 = v0;
  v2 = v0 >> 30;
  

v3 = *(_ DWORD )((_ DWORD *)(__ readfsdword((已签名)   __int32)& current_task)+ 468)+ 36);

  v4 = *(_DWORD *)(v3 + 8 * (v0 >> 30));
  v5 = *(_DWORD *)(v3 + 8 * v2 + 4);
  if ( v4 & 1 )
  {
    v6 = *(_DWORD *)(((v1 & 0x3FE00000) >> 18) + (v4 & 0xFFFFF000) - 0x40000000);
    if ( v6 & 1 )
    {
      if ( v6 & 0x80 )
      {
        v9 = v1;
        printk("2MB page\n");
        result = v9 & 0x7FFFF | v6 & 0xFFF80000;
      }
      else
      {
        v10 = v1;
        v7 = get_pte_entry();
        if ( v7 & 1 )
        {
          result = v10 & 0xFFF | v7 & 0xFFFFF000;
        }
        else
        {
          printk("PT64 entry not present %x\n");
          result = 0;
        }
      }
    }
    else
    {
      printk("PD64 entry not present %x\n");
      result = 0;
    }
  }
  else
  {
    printk("PAE entry not present %x\n");
    result = 0;
  }
  return result;
}

它的运行显示: runing display

你知道current_task吗?

1 个答案:

答案 0 :(得分:0)

您正在/正在pwnable.kr上进行softmmu挑战。

您正在寻找的current_task是指向" struct task_struct"的指针。这是当前正在运行的流程所独有的(在您的情况下,对于您显示的屏幕截图,请参见#39; cat')。然而,这应该是对用户土地应用程序隐藏的,它是内核中的一个关键结构。您可能需要找到泄漏此信息的方法。如果你可以泄漏thread_info,它有一个指向你需要的任务的指针。如果您有任意读/写,您将能够更新任务的有效凭据并获得root。

这是一个描述thread_info和task_struct之间关系的好页面。 http://hypervsir.blogspot.com/2014/10/in-linux-kernel-threadinfo-is-small-cpu.html