Hallo Kniddi,
der folgende Weg klappt oft, aber nicht immer:
Zunächst die EXE-Datei mit 7zip entpacken.
Daraus extrahierte Dateien, die noch immer größer sind, als das ROM, erneut entpacken.
Mit Glück erhält man nach mehrmaligem Entpacken eine Datei, die aufs Bit genau ins ROM passt.
Wenn nicht, also wenn sich irgendwann eine noch immer zu große Datei nicht mehr weiter entpacken lässt, dann muss diese per Hexeditor zerdröselt werden.
In diesem (russischsprachigen) Video wird das für ein Acer-BIOS demonstriert:
Как распаковать BIOS Acer. Пару слов о SPI Flash.
Auch ohne russische Sprachkenntnisse dürfte das Verfahren klar werden, denke ich.
Ab Zeitpunkt 2:44 erklärt der gute Mann zunächst etwas über die verschieden großen ROMs und den dazu passenden Dateigrößen:
1Mb = 1048576 Bit = 131072 Byte.
2Mb = 2097152 Bit = 262144 Byte
4Mb = 4194304 Bit = 524288 Byte
8Mb = 8388608 Bit = 1048576 Byte
16Mb = 16777216 Bit = 2097152 Byte
32Mb = 33554432 Bit = 4194304 Byte
Ab Zeitpunkt 17:35 wird die Arbeit im Hexeditor gezeigt.
Man muss den Anfang und das Ende des entscheidenden Datenblocks finden, abhängig von der Größe des ROMs.
Und dieser Datenblock muss dann als Datei gespeichert werden.
Der Anfang des Datenblocks beginnt (oft, aber IMHO nicht immer) in der Zeile hinter der Zeichenkette "IMG".
Man findet den Anfang also (oft, anscheinend nicht immer) per Suche nach dem String "IMG".
Glücklicherweise scheint es so zu sein, dass man immer nur ganze Zeilen beachten muss.
Schneidet man alles vor dem interessanten Datenblock weg (also inklusive der Zeile mit "IMG"), dann endet der Block - abhängig von der Größe des ROMs - an den folgenden, links im Hexeditor angezeigten Hexadazimal-Adressen:
1Mb - 000FFFF0
2Mb - 001FFFF0
4Mb - 003FFFF0
8Mb - 007FFFF0
(im Video wird das Wegschneiden des Anfangs vor dem interessanten Datenblock gezeigt ab Zeitpunkt 18:40)
Dazu ist noch zu bemerken, dass die wahren Enden natürlich um "F" größer sind, weil die jeweilige Zeile ja noch komplett dazu gehört.
Beispiel:
Die erste Zeile im Hexeditor ist links mit "...0000" markiert. Sie endet aber natürlich rechts bei "...000F".
Die zweite Zeile im Hexeditor ist links mit "...0010" markiert. Sie endet aber natürlich rechts bei "...001F".
Und so weiter.
Man muss zuletzt noch alle Zeilen wegschneiden, die größere Adressen haben, sofern welche vorhanden sind.
Am Ende bleibt ein Datenblock stehen, der aufs Byte genau der Größe des ROMs (in Byte) entspricht und dieser muss dann als Datei gespeichert werden.
Und nicht durch den Tüddel kommen, mit Bit und Byte!