关于int9号中断程序的改写
15章要求我们改写int9号中断,我觉得把它写完放进一段内存里面,然后把中断向量表的地址入口改成我们写的那个程序的地址,然后在int9不就行了么,我在学习内中断的时候视频就是那么教的,可是视频却说不能直接int9去调用那个程序,说是中断向量表不是原来的地址,但是我想这有什么
影响,它检测到9号中段类型码不就去向量表里找我们改写好的地址么,怎么不能执行 用代码说明你的问题 我不会写那个代码,其实我想写一个松开a键之后屏幕就全是a,不是要安装,就是临时替换一下那个int9号中断不用在纯doa环境下就能执行,求个代码 小白100000000 发表于 2019-5-21 10:52
我不会写那个代码,其实我想写一个松开a键之后屏幕就全是a,不是要安装,就是临时替换一下那个int9号中断不 ...
assume cs:code, ds:data
stack segment
db 1024 dup(0)
stack ends
data segment
old_int9:
dw 0, 0
flag:
db 0
data ends
code segment
start:
mov ax, stack
mov ss, ax
mov sp, 1024
mov ax, data
mov ds, ax
xor ax, ax
mov es, ax
cli
push word ptr es:
push word ptr es:
pop word ptr
pop word ptr
mov ax, offset new_int9
push ax
push cs
pop word ptr es:
pop word ptr es:
sti
@@:
cmp byte ptr , 0
je @B
push es
mov ax, 0b800h
mov es, ax
xor di, di
mov cx, 2000
mov ax, 0761h
rep stosw
pop es
cli
push word ptr
push word ptr
pop word ptr es:
pop word ptr es:
sti
mov ax, 4c00h
int 21h
new_int9:
push ax
in al, 60h
cmp al, 9eh
jne @F
or byte ptr , 1
@@:
pushf
call dword ptr
pop ax
iret
code ends
end start
页:
[1]