我是在国际开发协会专业分析linux的模块。但我不知道在源current_task。该模块是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?
你是/是工作在pwnable.kr的softmmu挑战。
你正在寻找的current_task是指向“struct task_struct的”所独有的当前运行的进程(在你的情况下,“猫”为你展示的截图)。然而,这是应该从用户的应用土地隐藏,它是在内核中一个关键的结构。你可能需要找到一种方法来泄露该信息。如果你能漏的thread_info,它有一个指向你所需要的任务。如果你有任意的读/写,你就能够更新任务和增益根的有效凭据。
下面是描述的thread_info和task_struct的关系良好的页面。 http://hypervsir.blogspot.com/2014/10/in-linux-kernel-threadinfo-is-small-cpu.html