Both POSIX based systems and Windows systems allow direct hardware access. When you make a call to a devices IO port, it gets caught by the fault handler because windows rewrites the IO permissions table, which is a feature of the architecture. Windows then decides if it will remap and push your request, or raise an alert and drop it. If your application is running as administrator, it'll (usually) allow it.
Also, making a grand-unified-rom-wiper is kinda...impossible. It requires having a program that knows all the quirks of each board and ROM and the SM backdoor to the ROM itself.
When I said that you cannot access hardware in POSIX systems i was talking about non superuser access. It's not possible to access the video card directly. You can access the driver calls that access the video card directly. You cannot also access the bios interrupts directly (or the sound card).
The only way to access the hardware directly in POSIX is trough changing the kernel or making a module that will integrate in to the kernel, and for that you need superuser rights.
About the virus, I was talking hypothetically, and hypothetically IT IS possible(for example changing the original program and make the user believe that he's downloading the right program).
Have a look at kpgen at sourceforge
Neither Emacs or Vi are my primary editors...
..and I'm not ashamed!!!
Hello, Binny88!
INT 10,0 - Set Video Mode
AH = 00
AL = 00 40x25 B/W text (CGA,EGA,MCGA,VGA)
= 01 40x25 16 color text (CGA,EGA,MCGA,VGA)
= 02 80x25 16 shades of gray text (CGA,EGA,MCGA,VGA)
= 03 80x25 16 color text (CGA,EGA,MCGA,VGA)
= 04 320x200 4 color graphics (CGA,EGA,MCGA,VGA)
= 05 320x200 4 color graphics (CGA,EGA,MCGA,VGA)
= 06 640x200 B/W graphics (CGA,EGA,MCGA,VGA)
= 07 80x25 Monochrome text (MDA,HERC,EGA,VGA)
= 08 160x200 16 color graphics (PCjr)
= 09 320x200 16 color graphics (PCjr)
= 0A 640x200 4 color graphics (PCjr)
= 0B Reserved (EGA BIOS function 11)
= 0C Reserved (EGA BIOS function 11)
= 0D 320x200 16 color graphics (EGA,VGA)
= 0E 640x200 16 color graphics (EGA,VGA)
= 0F 640x350 Monochrome graphics (EGA,VGA)
= 10 640x350 16 color graphics (EGA or VGA with 128K)
640x350 4 color graphics (64K EGA)
= 11 640x480 B/W graphics (MCGA,VGA)
= 12 640x480 16 color graphics (VGA)
= 13 320x200 256 color graphics (MCGA,VGA)
= 8x EGA, MCGA or VGA ignore bit 7, see below
= 9x EGA, MCGA or VGA ignore bit 7, see below
- if AL bit 7=1, prevents EGA,MCGA & VGA from clearing display
- function updates byte at 40:49; bit 7 of byte 40:87
(EGA/VGA Display Data Area) is set to the value of AL bit 7
INT 10,13 - Write String (BIOS versions from 1/10/86)
AH = 13h
AL = write mode (see bit settings below)
= 0 string is chars only, attribute in BL, cursor not moved
= 1 string is chard only, attribute in BL, cursor moved
= 2 string contains chars and attributes, cursor not moved
= 3 string contains chars and attributes, cursor moved
BH = video page number
BL = attribute if mode 0 or 1 (AL bit 1=0)
CX = length of string (ignoring attributes)
DH = row coordinate
DL = column coordinate
ES:BP = pointer to string
Bit settings for write mode (register AL):
|7|6|5|4|3|2|1|0| AL
| | | | | | | `---- 0=don't move cursor, 1=move cursor
| | | | | | `----- 0=BL has attributes, 1=string has attributes
`---------------- unused
returns nothing
- BEL, BS, CR, LF are treated as ASCII control codes
- wraps data and scrolls if unable to fit data on one line
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks