鱼C论坛

 找回密码
 立即注册
查看: 2439|回复: 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号中断不 ...
  1. assume cs:code, ds:data

  2. stack segment
  3.         db        1024 dup(0)
  4. stack ends

  5. data segment
  6. old_int9:
  7.                 dw 0, 0
  8. flag:
  9.                 db 0
  10. data ends

  11. code segment
  12. start:
  13.         mov        ax, stack
  14.         mov        ss, ax
  15.         mov        sp, 1024
  16.         mov        ax, data
  17.         mov        ds, ax
  18.         xor        ax, ax
  19.         mov        es, ax
  20.        
  21.         cli
  22.         push        word ptr es:[9 * 4]
  23.         push        word ptr es:[9 * 4 + 2]
  24.         pop        word ptr [old_int9 + 2]
  25.         pop        word ptr [old_int9]
  26.        
  27.         mov        ax, offset new_int9
  28.         push        ax
  29.         push        cs
  30.         pop        word ptr es:[9 * 4 + 2]
  31.         pop        word ptr es:[9 * 4]
  32.         sti
  33. @@:
  34.         cmp        byte ptr [flag], 0
  35.         je        @B
  36.        
  37.         push        es
  38.         mov        ax, 0b800h
  39.         mov        es, ax
  40.         xor        di, di
  41.         mov        cx, 2000
  42.         mov        ax, 0761h
  43.         rep        stosw
  44.         pop        es
  45.        
  46.         cli
  47.         push        word ptr [old_int9]
  48.         push        word ptr [old_int9 + 2]
  49.         pop        word ptr es:[9 * 4 + 2]
  50.         pop        word ptr es:[9 * 4]
  51.         sti
  52.        
  53.         mov        ax, 4c00h
  54.         int        21h
  55.        
  56. new_int9:
  57.         push        ax
  58.        
  59.         in        al, 60h
  60.         cmp        al, 9eh
  61.         jne        @F
  62.         or        byte ptr [flag], 1
  63. @@:
  64.         pushf
  65.         call        dword ptr [old_int9]
  66.        
  67.         pop        ax
  68.         iret
  69.        
  70. code ends
  71. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 21:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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