2012-10-15 48 views
1

我試圖反轉mbr rootkit並面臨低內存地址0x4c和0x4e的問題。 我不知道他們的目的地。低內存地址0x4c和0x4e

[0x000000000009f51c] 9f40:011c (unk. ctxt): xor ax, ax    ; 33c0 
[0x000000000009f51e] 9f40:011e (unk. ctxt): mov ds, ax    ; 8ed8 
... 
[0x000000000009f52e] 9f40:012e (unk. ctxt): cli      ; fa 
... 
[0x000000000009f52f] 9f40:012f (unk. ctxt): xor ax, ax    ; 33c0 
[0x000000000009f531] 9f40:0131 (unk. ctxt): mov word ptr ds:0x4c, ax ; a34c00 
[0x000000000009f534] 9f40:0134 (unk. ctxt): mov ax, es    ; 8cc0 
[0x000000000009f536] 9f40:0136 (unk. ctxt): add ax, 0x0040   ; 054000 
[0x000000000009f539] 9f40:0139 (unk. ctxt): mov word ptr ds:0x4e, ax ; a34e00 
[0x000000000009f53c] 9f40:013c (unk. ctxt): sti      ; fb 

在9f40:0131 DS爲零。

回答

2

實模式中斷向量表從地址0開始,它包含256箇中斷服務程序的4個字節(遠)指針。

0x4c/4 = 19,0x4e/4 = 19,因此代碼正在訪問指向矢量19(= 0x13)的ISR的指針。

該ISR是特殊的,它與int 0x13指令一起調用以訪問磁盤。查看拉爾夫布朗的中斷清單瞭解詳情。

上面的代碼在中斷向量表中更改了此ISR的地址。它可能會攔截來自其他軟件(例如OS加載程序)的磁盤I/O,因此它可以僞造一些數據。

它將ISR地址設置爲0x40:0,這正好在中斷向量表結束之後。