我正在尝试颠倒mbr rootkit,但遇到了内存地址不足的问题: 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发布于 2012-10-15 16:30:49
0x4c/4=19,0x4e/4=19,因此代码访问指向向量19的ISR的指针(=0x13)。
ISR是特殊的,它是用int 0x13指令调用的,以便访问磁盘。有关详细信息,请查看Ralf Brown的中断列表。
上述代码更改中断向量表中此ISR的地址。它这样做可能是为了拦截来自其他软件(例如操作系统加载程序)的磁盘I/O,这样它就可以伪造一些数据。
它将ISR地址设置为0x40:0,该地址紧跟在中断向量表结束之后。
https://stackoverflow.com/questions/12891693
复制相似问题