鱼C论坛

 找回密码
 立即注册
查看: 2947|回复: 3

关于int9号中断程序的改写

[复制链接]
发表于 2019-5-20 19:51:47 | 显示全部楼层 |阅读模式
50鱼币
15章要求我们改写int9号中断,我觉得把它写完放进一段内存里面,然后把中断向量表的地址入口改成我们写的那个程序的地址,然后在int9
不就行了么,我在学习内中断的时候视频就是那么教的,可是视频却说不能直接int9去调用那个程序,说是中断向量表不是原来的地址,但是我想这有什么
影响,它检测到9号中段类型码不就去向量表里找我们改写好的地址么,怎么不能执行

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-20 21:51:07 | 显示全部楼层
用代码说明你的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-5-21 10:52:34 From FishC Mobile | 显示全部楼层
我不会写那个代码,其实我想写一个松开a键之后屏幕就全是a,不是要安装,就是临时替换一下那个int9号中断不用在纯doa环境下就能执行,求个代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-24 18:26:00 | 显示全部楼层
小白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:[9 * 4]
        push        word ptr es:[9 * 4 + 2]
        pop        word ptr [old_int9 + 2]
        pop        word ptr [old_int9]
        
        mov        ax, offset new_int9
        push        ax
        push        cs
        pop        word ptr es:[9 * 4 + 2]
        pop        word ptr es:[9 * 4]
        sti
@@:
        cmp        byte ptr [flag], 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 [old_int9]
        push        word ptr [old_int9 + 2]
        pop        word ptr es:[9 * 4 + 2]
        pop        word ptr es:[9 * 4]
        sti
        
        mov        ax, 4c00h
        int        21h
        
new_int9:
        push        ax
        
        in        al, 60h
        cmp        al, 9eh
        jne        @F
        or        byte ptr [flag], 1
@@:
        pushf
        call        dword ptr [old_int9]
        
        pop        ax
        iret
        
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 20:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表