english
BIOS Hilfe - Fragen und Antworten
zurück zur BIOS-Hilfe...

Bios ändern und danach Checksumme anpassen
23.Oct 2007 23:41
billiboy schreibt:
Hi..
Ich möchte in meinem Bios etwas ändern. Wie kann ich danach die Checksumme neu errechnen?
Hat da vielleicht jemand nen Tip?

thx
billi
Bios ändern und danach Checksumme anpassen
24.Oct 2007 07:04
biosflash antwortet:
Zuerst müsste man den Speicherort der Checksumme im Code identifizieren, der wahrscheinlich ganz am Anfang oder Ende eines ROM-Codeblocks im Bios-File liegen dürfte. Dann den davor bzw. dahinter stehenden Code als CRC-32-Prüfsumme berechnen und in den gefundenen Speicherort schreiben.
Bios ändern und danach Checksumme anpassen
24.Oct 2007 15:04
billiboy antwortet:
Oh, das wird leider nicht gehen, denn das wurde schon von jemandem Probiert.

Hab grad nicht so viel Zeit das Prob ausfürlich zu erklären, das mach ich heute Abend.

Aber hier mal mein Prob was ich im Moment hab.
Ist eine Beispiel Rechnung die ich nicht ganz nachvollziehen kann.

1--->  00||86||80|||43||||10|EF||||86||80||22|||25 
2--->  00||60||12|||90||||38|EF||||CF||17||14|||00 
         ============================= 
          00,-26,-6E,+4D,+28,00,+49,-69,-0E,-25 
1---> wird im Bios gegen 1--> getauscht. Dadurch stimmt die Checksumme nicht mehr. Jetzt soll an ungenutzter Stelle die Differenzen zwischen den Beiden aufgerechnet werden damit die Checksumme wieder stimmt.

Hier mal meine Rechnung...

Niedrigem Wert von hohem Wert abziehen
00| |86| |80| |43| |10| |EF| |86| |80| |22| |25|
00| |60| |12| |90| |38| |EF| |CF| |17| |14| |00|
====================================================
00| |86-60=26 | |80-12=6E| |90-43=4D| |38-10=28| |00| |CF-86=49| |80-17=69| |22-14=0E| |25-00=25|

Nur weiß ich nicht wonach man gehen muss um + oder - vorzusetzen.
Mein Beispiel erklärer hat leider keine Zeit mir das zu erklären.

bis heute Abend
billi
Bios ändern und danach Checksumme anpassen
24.Oct 2007 15:58
biosflash antwortet:
Auf alle Fälle solltest du dir CRC32 (was wohl hier Anwendung findet) mal anschauen. Dort gibt es auch Links um die CRC nachträglich zu manipulieren.
Bios ändern und danach Checksumme anpassen
24.Oct 2007 21:55
billiboy antwortet:
So richtig werd ich da nicht fündig..

Kannst Du mir erklären warum

86-60=-26 wird und warum
90-43=+4D wird?

Ich versteh da den Sinn nicht wonach sich das entscheidet.

cu
billi
Bios ändern und danach Checksumme anpassen
24.Oct 2007 23:58
billiboy antwortet:

14 20                          43 3c                     10                   f4 
00+26+6E-4D         -28 00 -49+69             +0E              +25
========================================= 
ec 45                         69 58                     1e                     19
Also
10+0E=1E das stimmt
f4+25=19 das stimmt

Hat vielleicht jemand ne Ahnung wie ich dei andern rechnen muss damit die drunter stehenden Werte raus kommen?

cu
billi
Bios ändern und danach Checksumme anpassen
25.Oct 2007 07:34
biosflash antwortet:
So richtig werd ich da nicht fündig..

Kannst Du mir erklären warum

86-60=-26 wird und warum
90-43=+4D wird?

Ich versteh da den Sinn nicht wonach sich das entscheidet.

cu
billi Ich habe leider keine Ahnung woher du dieses Rechenbeispiel hast!

Ich denke mal, das die roten Plus und Minus nur sagen sollen, dass der neue Wert kleiner oder grösser als der alte ist. Also wäre: 26 kleiner als 86, also: "-".

Übrigends ist deine 2. Rechnung falsch, oder? Denn sie müsste 43-90 lauten. Denn nur dann wäre 4D grösser als 43, also: "+".
Bios ändern und danach Checksumme anpassen
25.Oct 2007 10:34
billiboy antwortet:
So, Sorry erstmal das ich hier nur schnell ein Paar Fragen reingeworfen hatte und noch gar nicht genau erklärt hab worum es geht. So ist es vielleicht leichter zu verstehen und Motiviert auch ander mit dem selbem Problem zur Mitarbeit. Und wenn nicht, Ich find das schon raus, und dann profitiere ich allleine davon. :mrgreen:

Also, es soll an einem HP Notebook (nx9420) die Whitelist geändert werden um ein Intel 4965 AGN WLAN Karte nutzen zu können. Die Whitelist von HP läßt aber nur eine Intel 3945ABG oder Broadcom BCM 4311 zu.
Diese Whitelist soll geändert werden für eine andere Karte. Das es funktioniert ist klar, denn ich habe ein modifiziertes Bios im Rechner laufen. Aber mit einer Atheros Karte.
Die anpassung hat mir irgend jemand aus dem Netz gemacht, der aber jetz keine Zeit mehr hat. Seine Erklärung zum Rechnen waren leider nicht sehr ausführlich, aber ich kenne das Prinzip.
Nun veruche ich das selbst heraus zu finden um einmal meine Karte zum laufen zu bringen und einmal um anderen User die auch das Prob mit dem "104 Unsupported Wireless Network Device detected" vielleicht ein Tutorial in die Hand zu geben wie man diesen Zwang einiger Hersteller um gehen kann.
Ich finde es nämlich echt eine Frechheit mir Vorzuschreiben welche Peripherie ich in meinem Notebook verwenden soll.
So, das erstmal zum Hintergrund.

Alles hier erklärte erfolgt ohne Garantie und ohne Übernahme einer Haftung bei eventellen Schäden.


Jetzt zur Theorie und Praxis. :crazy:

Am einfachsten währe es, die Sprungadresse zu finden wo die Abfrage stattfindet oder die Stelle wo die Checksumme gebildet wird. Beides ist aber leider nicht gelungen.

Also gehen wir einen anderen weg.

Folgende Sachen werden benötigt:
- Die ID´s der laufenden Karten
- Die ID´s der NICHT laufende Karte
- Eine flashbares Bios File das auf jedenfall im lappi läuft

Über den Gerätemanager in Windows -->Eigenschaften-->Details-->Hardware-IDs bekommt man raus welche ID die eingebaute Karte hat.
Wer für seine neu einzubauende Karte keine ID hat, der kann die neue Karte per Hotplug einbauen, und dann die ID der Karte über den Gerätemanager herausfinden.

Diese Karte ist im Book eingebaut:
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C

Diese Karte soll rein:
PCI\VEN_8086&DEV_4229&SUBSYS_11208086

Über die Seiten des Herstellers konn man auch noch Infos bekommen welche Karten das Book noch unterstützt. Ist wichtig zu wissen, denn so haben wir mehr Stellen wo wie die Änderungen ansetzen können.

Bei mir (HP nx9420) werden die Broadcom BCM 4311 und Intel 3945ABG unterstütz.


Die Id´s stehen im Bios aber in anderer Reihenfolge in little bzw. middle indian.

Diese müssen umformatiert werden wie die ID´s dann im Bios erscheinen.

Ich gehe dabei nach diesem schema vor:

Diese Intel karte ist drin:

PCI\VEN_8086&DEV_4222&SUBSYS_135C103C
               8086         4222                135C103C
wird zu
               8680         2242              3C10 5C13
als Bios String:
8680 2242 3C10 5C13
Diesen String suchen wir nun im Bios File.
Zur suche nutze ich nur 86802242 , da der rest ein wenig verteilt im File ist.

Im File finde ich dann folgende Stelle..

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (Intel_ID nach der wir gesucht haben)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Der komplette ID String der benötigt sieht aber so aus: 8680 2242 3C10 5C13

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (komplette Intel_ID unserer Karte)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Jetzt werfen wir einen Blick in das .inf File der Treiber der Karte und suchen uns unsere eingebaute Karte und umliegenden Karten zu unserer eingebauten herraus.

; HP_3945_ABG
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_MOW1 , PCI\VEN_8086&DEV_4222&SUBSYS_135B103C ; MOW1
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_MOW2 , PCI\VEN_8086&DEV_4222&SUBSYS_135C103C ; MOW2 (unsere eingebaute Karte)
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_RoW , PCI\VEN_8086&DEV_4222&SUBSYS_135D103C ; RoW
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_JPN , PCI\VEN_8086&DEV_4222&SUBSYS_135E103C ; JPN
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_KRA , PCI\VEN_8086&DEV_4222&SUBSYS_135F103C ; KRA

Übersichtlicher zusammengeschoben und überflüssiges entfernt:

; HP_3945_ABG
PCI\VEN_8086&DEV_4222&SUBSYS_135B103C
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C (unsere eingebaute Karte)
PCI\VEN_8086&DEV_4222&SUBSYS_135D103C
PCI\VEN_8086&DEV_4222&SUBSYS_135E103C
PCI\VEN_8086&DEV_4222&SUBSYS_135F103C


Hier jetzt mit *Umgewandelte ID´s*

PCI\VEN_8086&DEV_4222&SUBSYS_135B103C 8680 2242 3C 10 5B 13
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C 8680 2242 3C 10 5C 13 *original eingebaut von HP*
PCI\VEN_8086&DEV_4222&SUBSYS_135D103C 8680 2242 3C 10 5D 13
PCI\VEN_8086&DEV_4222&SUBSYS_135E103C 8680 2242 3C 10 5E 13

Jetzt kann man erkennen, das es 5 verschiedene Intel 3945ABG Kartenversionen (von HP) gibt.

PCI\VEN_8086&DEV_4222&SUBSYS_135B103C 8680 2242 3C 10 5B 13 (teil der Intel_ID unserer Karte / unterschiedliche Karten)
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C 8680 2242 3C 10 5C 13 *original eingebaut von HP*
PCI\VEN_8086&DEV_4222&SUBSYS_135D103C 8680 2242 3C 10 5D 13
PCI\VEN_8086&DEV_4222&SUBSYS_135E103C 8680 2242 3C 10 5E 13

Jetzt sehen wir mal wieder in unser Bios File.

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (teil der Intel_ID unserer Karte / unterschiedliche Karten)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Wenn man sich die blauen Id´s drumrum gut ansieht, so kann man die komplette whitelist erkennen. Damit werden nur diese 5 Intel 3945_ABG erlaubt. Die Intel 3945_ABG gibt es aber noch für IBM,DELL,Toshiba,Sony. Da hat jede Karte wieder eine andere ID. Jeder Notebook Hersteller kocht hier seine eigene Suppe. Aber egal. :bg:

An diesen Stellen können wir die ID´s der neuen Karte dann eintrage. Dazu aber später. :happy:

Wenn wir die alten ID´s gegen die neuen tauschen stimmt die Checksumme des Fils nicht mehr, und es kann nicht geflasht werden da das HP Flashtool das erkennt.

Wie oben schon erwähnt ist es nicht möglich die Stelle zu finden wo die Checksummer errechnet wird.

Also gehen wir einen anderen Weg.

Im Bios gibt es noch eine 2. Whitlist für die Broadcom BCM 4311 Karte.

Broadcom BCM 4311

PCI\VEN_14E4&DEV_4312&SUBSYS_1360103C E414 1243 3C 10 60 13
PCI\VEN_14E4&DEV_4312&SUBSYS_1361103C E414 1243 3C 10 61 13
PCI\VEN_14E4&DEV_4312&SUBSYS_1362103C E414 1243 3C 10 62 13
PCI\VEN_14E4&DEV_4312&SUBSYS_135F103C E414 1243 3C 10 5F 13

Jetzt sehen wir mal wieder in unser Bios File.

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (teil der Intel_ID unserer Karte / unterschiedliche Karten)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00 (teil der Broadcom_ID / unterschiedliche Karten)
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Da wir keine der Broadcom Karten nutzen, müssen deren ID´s zum angleichen der Checksumme herhalten.

Und nun gehts zur neuen Karte:

Das ist die neue Karte die rein soll:

PCI\VEN_8086&DEV_4229&SUBSYS_11208086
               8086          4229                11208086
wird zu
               8680          2942               8680 2011  

als Bios String:
8680 2942 8680 2011
Das heißt also:

8680 2242 3C10 5C13 wird zu
8680 2942 8680 2011

Hier nochmal das original mit den alten Karten:

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (teil der Intel_ID unserer Karte / unterschiedliche Karten)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00 (teil der Broadcom_ID / unterschiedliche Karten)
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Und hier schon mal mit der neuen:

0x10CF0: 18 C3 86 80 29 42 86 57 80 20 11 83 00 5C 84 00 (teil der alten Intel_ID / teile der neuen Intel ID)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00 (Broadcom_ID über den die Checksumme wieder angeglichen wird)

Nun gehts ans rechnen der Checksumme.

Hier mal das Beispiel meines Helfers. Die 86 80 43 10 EF 86 80 22 25 habe ich benutzt um meine ID´s auszutauschen.
Also 86 80 43 10 EF 86 80 22 25 gegen 60 12 90 38 EF CF 17 14 00 tauschen.
Die e4 ff 14 20 43 3c 10 f4 12 habe ich benutzt um die Checksumme wieder anzugleichen.

Also e4 ff 14 20 43 3c 10 f4 12 gegen e4 ff ec 45 69 58 1e 19 12 tauschen.

Die Checksumme des Bios berechnet sich über die Summe aller 4Byte Blöcke. Als Ergebnis kommt wieder eine 4Byte große Zahl raus.
Man mußt du die Checksumme eben relativ zu der Stellenwert-Änderung
anpassen. Simple Addition und Subtraktion mit Hex-Zahlen reicht da
ansich aus.

Stellenwert auffüllen wegen der 4 Bytes Blöcke

00||86||80|||43||||10|EF||||86||80||22|||25
00||60||12|||90||||38|EF||||CF||17||14|||00
=================================
00,-26,-6E,+4D,+28,00,+49,-69,-0E,-25

Alle negativen Werte fehlen in der Checksumme, und alle positiven
Werte sind zuviel. Also muss man die entsprechend Werte in das Gegenteil umwandeln.

00,-26,-6E,+4D,+28,00,+49,-69,-0E,-25 wird zu
00,+26,+6E,-4D,-28,00,-49,+69,+0E,+25

14 20 43 3c 10 f4
00+26+6E-4D
-28 00 -49+69
____________+0E+25
==========
ec 45 69 58 1e 19 Ich versteh nicht so ganz wie er auf + oder - vor den Werten gekommen ist. Er zieht den niedrigen Wert von hohem Wert ab.
Hab ich nachgerechnet, und das stimmt.

00||86||80|||43||||10|EF||||86||80||22|||25
00||60||12|||90||||38|EF||||CF||17||14|||00
=================================
00,-26,-6E,+4D,+28,00,+49,-69,-0E,-25

Die Umwandlung inst gegenteil ist mir logisch.

00,-26,-6E,+4D,+28,00,+49,-69,-0E,-25 wird zu
00,+26,+6E,-4D,-28,00,-49,+69,+0E,+25

Die Rechnung von der Sache her auch, nur ich bekomme ein wenig was anderes raus. Seine Rechnung:

14 20 43 3c 10 f4
00+26+6E-4D
-28 00 -49+69
____________+0E+25
==========
ec 45 69 58 1e 19 Meine Rechnung:

14 20 43 3c 10 f4 ist der Wert mit dem gerechnet wird

14 20 43 3c
00 +26 +6E -4D
14 46 B1 EF
-28 00 -49 +69
EC 46 68 58

dann noch

10 f4
+0E+25
1E 19

Das ergibt
bei mir: EC 46 68 58 1E 19
beim H: ec 45 69 58 1e 19

So, und da liegt jetzt das nächste Problem.
Warum hab ich 46 und er 45 und ich 68 und er 69 raus.

Vom logischen her, würd ich sagen das hebt sich auf, aber irgendwie muss ja der Unterschied zustande kommen.

So, das wars erstmal mit meinen Ausführungen.

to be continued :crazy:

billi

zurück zur BIOS-Hilfe...