CMOS, jak jistě mnozí víte, je paměť - BIOS. A co jsou porty,
je snad jasné každému (tiskárna, sériák, USB ...).
Na porty se přistupuje tak, pomocí funkce zapisujete / čtete bajt z určité adresy.
K tomu slouží funkce ze souboru conio.h :
outp(int, int);
V developer studiu se to jmenuje takhle :
_outp(int, int);
Dáme si example zápisu desítky na adresu 0x71 (tam se rozkládá BIOS) :
_outp(0x71, 10); // zápis hodnoty 10 na adresu 0x01
|
Potom adekvátně funkce pro čtení :
inp(int, int);
A microsofská :
_inp(int, int);
A teď už můžete zapisovat, směle do toho. Hlavně nikdy nezapisujte nic nikam, kam nevíte
a proto tu mám jeden jednoduchý program ...
#include <conio.h>
#include <stdio.h>
int main()
{
printf("Tento program vám smaže heslo z BIOS\n);
_outp(0x71, 0x10); // zápis hodnoty 0x10 na adresu 0x70
_outp(0x71, 0xff); // zápis hodnoty 0xff na adresu 0x71
return 1;
}
|
Tento program odmaže heslo ze setupu zapsáním dvou hodnot do vaší CMOS paměti. (Ať žije
Mr. Lang !)
Úplně stejné je to s porty, s tím, že adresa paralelního portu je 0x381 (LPT1) a 0x271
(LPT2) můžete zapisovat i do sériáku, beeperu a jiných hovadin. Jenom tyhle funkce
nebudou fungovat pod WinNT, tam musíte použít speciální API. API musíte použít taky
pro USB port a tak. Vlastně tenhle přístup na porty se už moc nepoužívá, leda byste chtěli
něco pomocí počítače ovládat.
-tHE SWINe-