在持久性程序中捕获键盘输入

时间:2018-03-17 07:44:45

标签: assembly nasm dos x86-16 interrupt-handling

我正在尝试为旧的dos游戏创建一个简单的“作弊”程序,通过将其自身加载到内存中,然后拦截键盘输入并在按下某个键时执行某些操作。

所以我通过

捕获输入
cli                        
mov ax, [es:9*4+2]     
mov [origseg], ax
mov ax, [es:9*4]
mov [origint], ax

mov     word [es:9*4], kbhandler
mov     [es:9*4+2],cs
sti

然后,在kbhandler的末尾,我通过

将控制传递给原始处理程序
push word [origseg]
push word [origint]
retf

根据调试器,这可行,但最终崩溃了 “非法未处理的中断称为0”(在dosbox中)。我已经减少了自己的处理程序,除了上面的代码之外什么也没有,问题仍然存在。

对我做错了什么的想法?

0 个答案:

没有答案