Disclaimer: Le informazioni contenute nell'articolo sono da ritenersi a puro scopo informativo/didattico.
Warning: Alterare il BIOS può invalidare la garanzia, causare blocchi del PC e provocare spiacevoli inconvenienti di varia natura, effettuate ogni operazione con la massima cura e a vostro rischio e pericolo.
Warning: Alterare il BIOS può invalidare la garanzia, causare blocchi del PC e provocare spiacevoli inconvenienti di varia natura, effettuate ogni operazione con la massima cura e a vostro rischio e pericolo.
Liberamente tratto da My Digital Life.
Microsoft usa la tecnologia SLP 2.0 (System Locked Preinstallation) per il processo di attivazione delle versioni OEM (Original Equipment Manufacturer) di Windows Vista sui computer "branded" (Dell, HP, Lenovo...). Uno dei pre-requisiti per attivare, con una product key OEM, Windows Vista è l'esistenza di una SLP public key e di un SLP marker all'interno della sopra citata tabella SLIC contenuta nell'ACPI. Se si dispone di una vecchia motherboard con un BIOS non aggiornato dobbiamo andare a caccia di una patch (o di un hack) che permetta di aggiungere: SLIC table, OEMID e OEMTableID.
Le istruzioni originali per aggiungere le informazioni SLIC (già segnalate tempo fa ndA) implicavano la sostituzione dell'esistente ACPI decription table, il che avrebbe potuto compromettere alcune funzionalità della motherboard, ora c'è un modo migliore per aggiungere le informazioni senza sostituire nessun modulo ACPI.
La nuova procedura potrebbe funzionare anche sulle MB con BIOS obsoleti che apparentemente non sembravano essere modificabili o in quei casi in cui la modifica della tabella APIC comporta la reinstallazione dell'intero sistema operativo (step 8 della guida originale). Come per il precedente guida si farà riferimento ad un BIOS Award su MB DFI CA64-TC.
I tool utilizzati nei vari step sono:
- CBROM 2.15 e CBROM 2.19 – Aggiungere, modifica e scambia le componenti di un Award Modular BIOS, utilizzato per modificare l'ACPI digital byte-code table.
- MODBIN6 2.01.01 – Utilizzato per modificare le opzioni del BIOS (sempre Award). CBROM non è in grado di modificare i modulo core.
- WinHEX – Un HEX editor utilizzato per inserire i contenuti all'interno dell'ACPI table.
- HWDirect – Utilizzato per accedere ai registri hardware ed effettuare il dump della memoria.
Parte 1 – Modificare il BIOS per aggiungere una SLIC Table
- Create una directory temporanea (Vista or BIOS is you like) nella root directory del vostro HD (C:\)
- Scaricate CBROM 2.19, MODBIN6 2.01.01 e WinHEX, e salvateli nella directory creata al punto 1
- Utilizzando WinFlash, estraete l'immagine del vostro BIOS nel formato XXXXXXXX.bin (se il file estratto non ha l'estensione .bin rinominatelo) e salvatela nella directory temporanea. (Oppure più facilmente visitate il sito del manufacturer della MB e scaricate da lì il file)
- Lanciato il tool modbin6.exe (doppio click)
- Selezionate il file creato con WinFlash dai menu di MODBIN6
- Non chiudete la finestra di MODBIN6
Andate nella cartella temporanea dove avete salvato il BIOS, noterete che alcuni file sono stati creati dalle operazioni precedenti. Tra loro troverete, ORIGINAL.BIN (il file che dovremo modificare) - Eseguite WinHEX ed aprite ORIGINAL.BIN
- Cercate all'interno del file la stringa “RSDT” (senza gli apici). Se l'unica occorrenza che troverete è "RSDTFACPDSDTFACS" , non esiste alcuna ACPI table all'interno del vostro BIOS, quindi non c'è altro da fare che aggiungerla (nessuna modifica consentita). Tuttavia, annotate (e ricordate) da qualche parte l'indirizzo in cui avete trovato l'occorrenza della description table (nell'esempio D0E0).Abbiamo ora due vie percorribili:
- Ci sono 4 o più "slot" vuoti (00 HEX) che precedono RSDT. In questo caso, spostare l'intera stringa "RSDTFACPDSDT" in avanti di 4 posizioni lasciando "FACS" non modificato l' dov'è . Dopo lo spostamenteo, aggiungere "SLIC" negli spazi lasciati "vuoti" dallo spostamento. Annotate e ricordate l'indirizzo dove comincia la stringa ACPI spostata, in questo caso D0DC
- Se non c'è abbastanza spazio prima della stringa "RDST...", l'intera tabella ACPI può essere spostate in una locazione inutilizzata del file che stiamo editando. Cercate un blocco che assomigli a quello riportato nell'esempio (nella figura ne abbiamo uno a partire dall'indirizzo 0000E1E0), che rappresenta una locazione di spazio che non contiene nessun valore "FF FF FF ..." e che può essere scritta:
Copia ed incolla l'intera stringa ACPI con l'aggiunta dello "SLIC" (RSTDFACPDSDTSLIC il cui valore HEX è 525344544641435044534454534C4943) nella regione vuota che abbiamo trovato.
NOTA: ho detto incollare perché intendevo proprio la sovrascrittura degli spazi contenenti le "FF", NESSUN nuovo slot e/o carattere deve essere inserito e/o aggiunto al file.
E' possibile lasciare la precedente stringa ACPI nella sua posizione originale oppure sostituirla con "00" o "FF" (entrambi blank char) dato che la stringa nella location originale verrà ignorata. Annotate e ricordate la locazione di partenza della stringa ACPI, nell'esempio E1E0
- Visto che abbiamo cambiato e spostato la tabella ACPI nella locazione (vuota o no) di cui ai punti precedenti dobbiamo ora cambiare anche la referenza alla locazione di memoria che ora deve rispecchiare le modifiche apportare. Torniamo indietro alla locazione originale in cui si trovata la stringa ACPI (nell'esempio D0E0). Da qui cerchiamo (in esadecimale) la stringa E0D0 (notare che per la ricerca stiamo utilizzando la notazione inversa rispetto a quella del puntatore)
- Cambia la stringa E0D0 in DCD0 o D0E1 (a seconda dello scenario in cui vi siete trovati) oppure in ogni altra start location che avete scelto (invertendo sempre l'indirizzo che avete trovato rispetto all'offset visualizzato dal programma)
- Nell'intorno delle linee trovate dovrebbe esservi segnata una stringa del tipo B903 che indica al sistema il numero di tabelle ACPI che sono presenti nel BIOS. Se il sistema presente più di una tabella il numero sarà B903 per 4 tabelle, B904 per 5 tabelle e così via...
... insomma cambiate il valore aggiungendo una unità (es. B904 + 1 = B905) - Salvate il BIOS così modificato con WinHEX
- Switchate (alt + tab) nella finestra di MODBIN6 (non l'avete chiusa vero?), premete F2 per salvare oppure aprite il menu FILE e selezionate Save
La stringa FACS deve risiedere in una locazione fissa che non può (e non deve) essere modificata.
Parte 2 – Modificare l'ACPI Table del BIOS
- Aprite il prompt dei comandi (digitate Cmd sulla barra esegui del menu Windows). Cambiate la directory corrente con quella della cartella temporanea creata nella Parte 1
- Digitate “cbrom219 XXXXXXXX.bin /acpitbl extract” (senza apici, dove XXXXXXXX.bin è il nome file che avete scelto acpitbl.bin) date Invio.
Potete utilizzare anche awdbedit - Premere Invio nuovamente qualora vi venga chiesto di estrarre il file utilizzando il nome di default (acpitbl.bin)
- Utilizzare WinHEX per aprire acpitbl.bin (o qualunque nome gli avete dato)
- Cercate la stringa “RSDT” (senza apici)
- Alla fine del blocco RSDT, subito prima della stringa FACPt (o FXCPt per alcune MB Gigabytes ), inserire o aggiungere 4 byte (00 00 00 00) per rappresentare la SLIC table. (Utilizzando Ctrl-0 si apre una insert dialog box). Annotate e ricordatevi la locazione della tabella SLIC
- Il byte alla destra di "RSDT" rappresenta la lunghezza della tabella RSDT. Dobbiamo ora incrementare di 4 tale numero (contando in esadecimale, es: 28 + 4 = 2c)
- L'OEMID e OEMTableIS sono le stringe identificative per l'SLP 2.0 che dovranno matchare con la product key, ed entrambe devono matchare con la product key dell'OEM ad i certificati di cui si dispone. L'OEMID ha 6 caratteri e l'OEMTableID ha 8 caratteri. Ogni produttore hardware avrà il suo identificativo riportato in queste stringhe. Se si dispone di un compuer "branded" si potranno notare i rispettivi marchi di fabbrica del produttore. Se si sta utilizzando una MB generica si troverà una stringa del tipo “RSDT,…..XXXXXXXXXXXXXXX.0BAWRD” (senza apici, ed ovviamente il testo cambierà in funzione della MB) es: RSDT,….._ASUS_Notebook1.0BAWRD.
In questo caso l'OEMID è _ASUS_ e l'OEMTableID è Notebook. (Ogni carattere vuoto dovrà essere rimpito con 0x20)
Questo farà si che la propria MB (ivi compreso il BIOS) venga riconosciuta da Vista come una "ASUS" . - Salvate il file.
- Scaricate l'Asus OEM acpislic.bin.
- Tornate al prompt dei comanda, digitate il comando "copy acpitbl.bin /b + acpislic.bin /b acpitbl.bin /b".
Premere Invio una volta fatto per aggiungereil contenuto della tabella SLIC in coda al modulo ACPI.
acpislic.bin è firmato da un certificato digitale che contiene la chiave pubblica dell'SLP e il logo/marker.
Premere Invio se vi viene chiesto di sovrascrivere il file. - Aggiorare il BIOS con il modulo ACPI modificato eseguendo sempre da prompt il comando:
cbrom219 *.BIN /acpitbl acpitbl.bin (poi Invio) - Flashare ed aggiornare il BIOS con lo SLIC aggiunto e modificato. (Controllare la guida della MB su come eseguire questo step
- L'aggiornamento del BIOS è completato. Se state utilizzando Everest per controllare la tabella ACPI, noterete che lo SLIC non è ancora incluso. Questo perché il relativo address space non è stato ancora aggiunto (per lo SLIC deve essere fatto manualmente). Scaricate ed installate HWDirect
- Eseguite Everest, espandete la sezione Motherboard e selezionate ACPI. nel pannello di destra selezionate RSDT e trovate qual'è il valore massimo del "Memory Address". Nell'esempio è 1FFF3000h.
- Eseguite HWDirect.
- Utilizzata il valore trovata con Everest come chiave per il campo "Physical Address" (Hex). Size (espressa in byte in notazione HEX) imposta la grandezza di acpitbl.bin (2800 o inferiore). Clikkate ora sul bottone Dump button per salvare la memoria all'interno di un file.
- Nel pannello "Memory dump" cercate la stringa SLIC (o SLICv). Annotate e ricordare l'indirizzo di memoria fisico dello SLIC (o SLICv che sia). Nell'esempio l'indirizzo dello SLIC è 1FFF5500
- Se non avete chiudo WinHEX ritornate alla finestra di edit (altrimenti riaprite il file acpi acpitbl.bin)
- Ritornate nella locazione dove abbiamo aggiunto 4 byte (Parte 2 Step 6).L'ACPI table deve essere modificata per impostare il memory address dello SLIC.
- Inserite il "memory address" all'interno degli spazi che abbiamo precedentemente riempito con "00" modificando tutti e 4 i byte.
Attenzione: L'indirizzo di memoria deve essere inserito nella notazione inversa raggruppando a due a due le cifre
es: 1FFF5500 ma scritto come 00 55 FF 1F. - Salvate il file acpitbl.bin appena modificato
- Eseguite nuovamente gli Step 12 e 13
- Utilizzando Everest controllate ora che la tabella SLIC sia correttamente visualizzata (e riconosciuta), gettando un occhio anche a OEMID (_ASUS_) e OEMTableID (Notebook). Ulteriore check, controllate che questi valori siano i medesimi visualizzanti nella RSDT table.
Part 3 (opzionale) – Installare Windows Vista e un Certificato OEM firmato
- Installare Windows Vista con uno dei seguenti product key OEM ASUS:
Home Basic: 2WP98-XXXXX-XXXXX-XXXXX-XXXXX
Home Basic: 762HW-XXXXX-XXXXX-XXXXX-XXXXX
Home Premium: BH626-XXXXX-XXXXX-XXXXX-XXXXX
Home Premium: 8XPM9-XXXXX-XXXXX-XXXXX-XXXXX
Business: 72PFD-XXXXX-XXXXX-XXXXX-XXXXX
Ultimate: 6F2D7-XXXXX-XXXXX-XXXXX-XXXXXE' possibile variare la product key attualmente utilizzata eseguendo come amministratore il comando:
slmgr.vbs -ipk <nuova product key> - Scaricate oemcert.xrm-ms, che contiene il file del certificato firmato da Microsoft per i computer ASUS in grado di identificare i parametri del BIOS SLIC che abbiamo appena modificato. Copiatelo in C:\
- Aprite il prompt dei comandi ed eseguite:
slmgr.vbs -ilc C:\oemcert.xrm-ms
Installando il certificato per l'attivazione OEM. - Controllando le proprietà di Vista noterete che ora è attivato.
Enjoy :)
Potete trovare una lista di BIOS già modificati che supportino lo SLIC a questo indirizzo.
Dubbi o perplessità in merito alla procedura? Controllate questo thread.
----
Edit!: Virtual BIOS simulator Se volete attivare vista senza modificare il BIOS. :)
PS: Chissà se con Seven è possibile fare altrettanto?
[...] fino al prossimo aggiornamento Microsoft.Abbiamo già parlato in precedenza di come fosse possibile attivare vista o crackare windows7 giocherellando con il bios e le SLIC table di ACPI, ma data l’uscita di [...]
RispondiEliminadirei che la cosa più semplice e intelligente è... installare linux!
RispondiEliminaDirei che hai pienamente ragione :)
RispondiEliminaCiao Andrea, complimenti per il tuo sito. Volevo chiederti la possibilità di indirizzarmi sull'eventuale aggiornamento del Bios. Avrei intenzione di implementare una nuova cpu (pentium d 965 EE) sulla p5vd1-x della asus. quando installai la cpu il comuter non si avviava, pertanto o è un problema di meccanic (vrm/vid), oppure la cpu non è riconosciuta.... (anche se in tal caso penso che un qualche tipo di messaggio in fase di post avrei dovuto riceverlo). tu cosa ne pensi? (la cpu è funzionante).
RispondiEliminaSe non viene riconosciuta allora è con tutta probabilità un problema di bios
RispondiEliminaAggiorna pure il tutto vedrai che va :)
Edit: Grazie d'essere passato di qua :)
Grazie per la temperstiva risposta.... il problema è che non esistono versioni più recenti.
RispondiElimina