Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 低内存地址0x4c和0x4e_Assembly_X86_Interrupt_Bios - Fatal编程技术网

Assembly 低内存地址0x4c和0x4e

Assembly 低内存地址0x4c和0x4e,assembly,x86,interrupt,bios,Assembly,X86,Interrupt,Bios,我试图反转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.

我试图反转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为零。

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

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

ISR是特殊的,它通过
int0x13
指令调用以访问磁盘。查看拉尔夫·布朗的中断列表了解详细信息

上述代码更改中断向量表中此ISR的地址。它这样做可能是为了拦截来自其他软件(如OS loader)的磁盘I/O,以便伪造一些数据

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