;DOS下抓取128M BIOS 已加密 给大家练手用
;http://topic.csdn.net/u/20100503/17/adbde974-fde2-4a10-ac1f-49131a1efb88.html?98770
;DOS下抓取128MBIOS,部分解密
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
.386p
org 100h
START:
cli
in al, 0eeh
mov ax, 2401h
int 15h ;开放A20门
in al, 92h
or al, 2
out 92h, al
@10e:
in al, 64h
test al, 2
jnz @10e
mov al, 0d1h
out 64h, al
@118:
in al, 64h
test al, 2
jnz @118
mov al, 0dfh
out 60h, al
mov ax, cs
mov ds, ax
mov dx, offset filename
mov cx, 0
mov ah, 3ch
int 21h
mov bx, ax
mov ax, cs
shl eax, 4
add cs:[1bah], eax
lgdt cs:[1b8h]
;LGDT m16&32,将内存m16&32处的值装入全局描述符表寄存器
mov eax, cr0 ;控制寄存器
or al, 1
mov cr0, eax
mov cx, 8
nop
mov fs, cx
and al, 0feh
mov cr0, eax
mov esi, 0f8000000h
mov ax, 8000h
mov ds, ax
@165:
mov eax, fs:[esi]
mov [si], eax
add esi, 4
cmp si, +0
jnz @165
mov cx, 0ffffh
mov dx, 0
mov ah, 40h
int 21h
mov cx, 1
mov dx, 0ffffh
mov ah, 40h
int 21h
cmp esi, +0
jnz @165
mov ah, 3eh
int 21h
mov ax, 4c00h
int 21h
filename db './128MBIOS.BIN',0
org 1b8h
db 10h, 0, 0A8h, 01, 0, 0
CODE ENDS
END START
::0190 B4 3E CD 21 B8 00 4C CD-21 2E 5C 31 32 38 4D 42 .>.!..L.!./128MB
::01A0 49 4F 53 2E 42 49 4E 00-00 00 00 00 00 00 00 00 IOS.BIN.........
::01B0 FF FF 00 00 00 93 CF 00-10 00 A8 01 00 00 41 40 ..............A@
中断15h,功能24h,描述A20控制,平台PS/1.
这些功能控制A20门。开放A20门时,可以访问所有的扩展内存。
禁止时,A20地址线被强制为低电平来模拟8080地址映射。
这组功能出现在IBM 486 PS/1的BIOS中,可能还出现在最近的IBM BIOS中。
A20控制,共有四个了功能。
AL=子功能
0 禁止 A20
1 开放 A20
2 读取 A20 状态
3 未知功能
子功能描述:开放 A20
调用: ax=2401h
返回: 1.支持这个功能
ah=0, 进位位=0
2.不支持这个功能
ah=80h或86h,进位位=1