La prima istruzione che viene eseguita all’avvio di un computer appartiene al Basic Input-Output System, meglio noto con l’abbreviazione di BIOS. Nei vecchi sistemi, il BIOS, scritto nel linguaggio assembler del processore supportato dalla scheda madre, si interfacciava direttamente con l’hardware della macchina ed era posto all’interno di una ROM, vale a dire una memoria di sola lettura.
Con l’andare del tempo, le case produttrici hanno pensato bene di inserirlo all’interno di memorie EEPROM riscrivibili, per meglio poter ottimizzare i loro prodotti con eventuali future patch facilmente installabili dall’utente stesso.
Le funzioni principali che il BIOS è chiamato a svolgere sono: il testing dell’hardware; il loading del sistema operativo; e l’inizializzazione delle periferiche; fornire ai vari software una comoda interfaccia per utilizzarle. Il tutto viene fatto in automatico, in modo quasi trasparente all’utente, proprio perché queste operazioni sono delicate ed una configurazione non corretta delle impostazioni del BIOS comprometterebbe l’intera affidabilità del sistema. Di fatti, le società produttrici raccomandano di non modificarlo in nessun modo, a meno che non sia strettamente necessario.
Ma nulla ci impedisce di approfondire il suo studio, per capire come questo funzioni più nel dettaglio. A sistema operativo avviato, è possibile effettuare il dumping della EEPROM presente nella scheda madre che si sta usando semplicemente scrivendo pochissime righe di codice. Vediamo subito un esempio:
@echo off
echo Questo script eseguirà il dumping della tua eeprom
if "%1"=="" goto no_file
echo d f000:0 ffff > temp.scf
echo q >> temp.scf
debug < temp.scf > %1
echo BIOS (ROM) dumping eseguito al %1
goto end
:no_file
:end
Per far funzionare questo script bisogna richiamarlo passandogli come parametro, direttamente da riga di comando, il nome del file su cui si vuole salvare il dumping della EEPROM . Questa procedura permettere di avere l’esatto contenuto presente nel chip della scheda madre, molto utile se si ha la necessità di ritornare alla precedente versione del BIOS nel caso sfortunato di un tentativo di aggiornamento andato male. Se vi state chiedendo il motivo di questo comando:
echo d f000:0 ffff > temp.scf
dovete sapere che, come ogni macchina a stati finiti che si rispetti, durante il boot, il BIOS fa partire il computer dal suo stato iniziale, inviandogli quindi un segnale di reset ed inizia ad eseguire le istruzioni, come ad esempio il detecting dell’hardware ed il setting della RAM, proprio a partire dall’indirizzo F000:0. Subito dopo, se i test e tutte le procedura sono andate a buon fine, incarica l’MBR di trovare l’immagine del sistema operativo e di avviarlo. Nei prossimi articoli vedremo come resettare le impostazioni del BIOS, sia via hardware che software, e come eseguire su di esso delle vere e proprie operazioni di hacking.
di Rocco Galati - Programmazione.it