another example: #include char st[80] ={"hello world$"}; char st1[80] ={"hello...
TRANSCRIPT
Another Example:#include<BIOS.H>#include<DOS.H>char st[80] ={"Hello World$"};char st1[80] ={"Hello Students!$"};void interrupt (*oldint65)( );void interrupt newint65( );void main(){ oldint65 = getvect(0x65); setvect(0x65, newint65); keep(0, 1000);}
Continued:void interrupt newint65( ){
if (( _AH ) = = 0){
_AH = 0x09;_DX = (unsigned int) st;geninterrupt (0x21);
}else{
if (( _AH ) = = 1){
_AH = 0x09;_DX = (unsigned int) st1;geninterrupt (0x21);
}}
}
2nd Program:#include<BIOS.H>#include<DOS.H>void main(){
_AH = 1;geninterrupt (0x65);_AH = 0;geninterrupt (0x65);
}
Interrupt Interception Hooks/Stealing
Execution Interrupted
ISR Perform I/O
Normal Execution of Interrupt
Interrupt Interception
New Routine
Original Routine
Other form of Interrupt Interception
New Routine
Original Routine
void Interrupt newint();void Interrupt (*old)();void main(){old=getvect(0x08);Setvect(0x08,newint);Keep(0,1000);}void interrupt newint (){(*old)();}
Timer Interrupt
Hardware InterruptsInvoked by Means of Hardware
Approximately occurs 18.2 times per second
BIOS Data Area0040:0000
7 6 5 4 3 2 1 0
Right Shift key
Left Shift Key
Ctrl Key
Alt Key
Insert key
Caps Lock Key
Num Lock key
Scroll lock key
40:17H
Keyboard Status Word
#include <dos.h>void Interrupt (*old)();void Interrupt new();Char far *scr=(char far* ) 0x00400017;Void main(){old=getvect(0x08);Setvect(0x08,new);Keep(0,1000);}Void interrupt new (){*scr=64;(*old)();}
Interrupt Interception
New Routine
Original Routine
Memory Mapped Isolated I/O
Isolated I/O
MP I/O
IN
OUT
Memory Mapped I/O
MP I/O
MOV
MOV
Memory Mapped I/O ON Monitor
B8OO:0000B8OO:0001
B8OO:0002B8OO:0003
Low Byte = ASCII CODEHigh Byte =Attribute Byte
Memory Mapped I/O ON Monitor
X X X X X X X X
Back Color ColorBold
Blink
Low Byte = Ascii CodeHigh Byte = Attribute Byte
000 Black
100 Red
010 Green
001 Blue
111 White
fore color
unsigned int far *scr=0xb8000000;
void main(){
(*scr)=0x0756;(*(scr+1))=0x7055;
}