0

我想在实模式(DOS)下写 F000:0000 ~ FFFF:0000。
但是这个区域是写保护的。

我试图找到CPU和北桥的数据表。
但是,我找不到影子内存的写入方法。

我的系统配置:
M/B:ASUS P5B(965P Chipset)
CPU:Intel Pentium 4 Series

BIOS:AMI


4

1 回答 1

0

F000:0000 ~ FFFF:0000 是指向 HMA 的内存范围,在 80286 之后的所有处理器上。您可以在此处阅读更多信息。

要在没有 HIMEM.SYS 的情况下使用它,您应该执行以下操作:

您可以直接控制 8042 键盘控制器。使用命令 D1。写入输出端口:写入端口 60h 的下一个字节放入 8042 输出端口。

.286
                 mov     al,0d1h         ;send command to 8042
                 out     64h,al
 reloop:         in      al,64h          ;check that port 60h is available
                 or      al,02h
                 jnz     reloop
                 mov     al,11100011b    ;keep keyboard working and gate a20
                 out     60h,al
                 push    -1              ;set es=ffffh
                 pop     es
                 push    00h
                 pop     ds              ;set ds=0000h
                 mov     di,10h          ;check if it worked, compare
                 xor     si,si           ;ffff:0010h to 0000:0000 for 16 bytes
                 mov     cx,di           ;set cx to 10h
                 cld
                 rep     cmpsb           ;compare it
                 je      failed
                [...]                    ;worked, copy virus to ffff:xxxx
 failed:         jmp     short failed    ;do whatever
于 2013-07-10T18:38:08.350 回答