【问题标题】:Low-memory addresses 0x4c and 0x4e低内存地址 0x4c 和 0x4e
【发布时间】:2012-10-05 04:40:42
【问题描述】:

我正在尝试反转 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

9f40:0131 DS 为零。

【问题讨论】:

    标签: assembly x86 interrupt bios


    【解决方案1】:

    实模式中断向量表从地址 0 开始,它包含 256 个 4 字节(远)指针,指向 256 个中断服务程序。

    0x4c/4=19, 0x4e/4=19,因此代码正在访问指向向量 19(=0x13) 的 ISR 的指针。

    ISR 很特殊,它使用int 0x13 指令调用以访问磁盘。详情请查阅 Ralf Brown 的中断列表。

    上面的代码改变了中断向量表中这个ISR的地址。它这样做可能是为了拦截来自其他软件(例如操作系统加载程序)的磁盘 I/O,因此它可以伪造一些数据。

    它将 ISR 地址设置为 0x40:0,正好在中断向量表的末尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多