2016-02-14 69 views
0

我正在分析ida pro上的linux moudule。但我不知道源代碼中的current_task。這moudule是PROC程序並運行在您設置什麼是linux i686上的current_task?

它的來源的一部分虛擬地址linux命令:

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

V3 = *(_ DWORD )((_DWORD *)(__ readfsdword ((signed __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

查看'./ arch/x86/kernel/cpu/common.c' –

回答

0

您正在/正在研究pwnable.kr的softmmu挑戰。

您正在查找的current_task是指向「struct task_struct」的指針,該指針對當前正在運行的進程是唯一的(對於您顯示的屏幕截圖,您的情況爲'cat')。然而,這應該是隱藏在用戶應用程序中的,它是內核中的一個關鍵結構。您可能需要找到一種方法來泄漏這些信息。如果你可以泄漏thread_info,它有一個指向你需要的任務的指針。如果您有任意讀/寫,您將能夠更新任務的有效憑據並獲得root權限。

這是描述thread_info和task_struct之間關係的好頁面。 http://hypervsir.blogspot.com/2014/10/in-linux-kernel-threadinfo-is-small-cpu.html