1

mbr ルートキットをリバースしようとしているのですが、メモリ不足のアドレス 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 はゼロです。

4

1 に答える 1

2

リアルモード割り込みベクタテーブルはアドレス0から始まり、256個の割り込みサービスルーチンへの256個の4バイト(far)ポインタが含まれています。

0x4c / 4 = 19、0x4e / 4 = 19であるため、コードはベクトル19(= 0x13)のISRへのポインターにアクセスしています。

int 0x13そのISRは特別であり、ディスクにアクセスするための命令で呼び出されます。詳細については、ラルフブラウンの割り込みリストを参照してください。

上記のコードは、割り込みベクタテーブル内のこのISRのアドレスを変更します。これは、おそらく他のソフトウェア(OSローダーなど)からのディスクI / Oを傍受するために行われるため、一部のデータを偽造する可能性があります。

ISRアドレスを0x40:0に設定します。これは、割り込みベクタテーブルの終了直後です。

于 2012-10-15T08:30:48.683 に答える