我在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吗?答案 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