강좌 / 팁

하드웨어 Award ssv3 Zort Guide

2010.06.17 12:00

gooddew 조회:8070

In this SSV3 guide we'll mod Gigabyte GA-EP45-UD3P version F8 bios.


In SSV3 the SLIC is written in the system module of the bios.


Programs you'll need are:
- Winhex (You can use a different hex editor but you'll have to find the equivalent commands in your program.)
- WinRar (or similar program) for decompressing .LHA files.
- cbrom or cbrom32
- Calc (comes with windows so you already have it)


Make a folder for the bios and related files.

Make a new text file in here for mod notes. I call mine notes.txt. It's a good idea to save the notes from some of your mods because you can refer to them in the future when you're doing the same kind of mod. Being able to refer to a previous one will mean less typing and not having to remember what the next step is. (You can save the notes.txt included here for SSV3 mods.)

Open a command prompt (Run "cmd")

Run cbrom /d and output the result to a text file. We'll need to know the compressed module sizes in order to select and extract them.

ex: cbrom EP45UD3P.F8 /d > EP45UD3P.txt

When typing file names it's easiest to type the first couple letters and press tab to autocomplete.


              ********  EP45UD3P.F8 BIOS component ********

No. Item-Name         Original-Size   Compressed-Size Original-File-Name
===============================================================================
  0. System BIOS       20000h(128.00K)  13FFDh(80.00K)  EP45UD3P.BIN
  1. XGROUP            0E660h(57.59K)   09DB1h(39.42K)  awardext.rom
  2. ACPI Table        052CFh(20.70K)   01B6Fh(6.86K)   ACPITBL.BIN
  3. EPA               0168Ch(5.64K)    0030Dh(0.76K)   AwardBmp.bmp
  4. GROUP ROM[18]     04710h(17.77K)   02F59h(11.84K)  ggroup.bin
     ...
21. OEM0              02AEBh(10.73K)   01FCCh(7.95K)   SBF.BIN
22. NOCOMPRESS        11000h(68.00K)   11040h(68.06K)  UTS64K.BIN
------------------------------------------------------------------------------------------

We need to extract the first 4 modules-- EP45UD3P.BIN, awardext.rom, ACPITBL.BIN, and AwardBmp.bmp.

Start Winhex and open EP45UD3P.F8. (You can drop the file in the Winhex window.)

Make sure Offsets is set to hexadecimal in the left pane. If it says decimal click in the Offset column to change it.

In this bios the first module begins at offset 0, but that isn't always the case. If it wasn't there you could quickly find it by pressing Control-F and searching for the name of the module (EP45UD3P.BIN).

The third byte of award modules will always be "2D" because of "-lh" in the header. Knowing that makes it easy to select the first byte. The last byte of a module is usually 00.

The system module is followed by a FF byte. (In old Award bioses it is followed by an 8-bit checksum byte instead of FF.) The byte following the system module is included in the size reported by cbrom /d.

Cbrom shows 13FFD as the size of the system module. That means the system module is going to be at 0-13FFB. It looks like 2 less, but that's because it starts with offset 0 not 1, and because of the FF byte after the module. Click Edit-> Define Block and enter 0 for beginning and 13FFB for end. You can see the range and size of the currently selected block in the status bar.

Press Alt-G and put 13FFB to go that offset. You can see the FF following the selection and the third byte of the next module is "2D". Click Edit-> Copy Block -> Into New File. Save the file as EP45UD3P.lha in the folder you made.

Start calc. If it's in Standard mode then click View-> Scientific. Switch from Decimal to Hex.
Enter 13FFC (the byte before the next module). Add 9DB1 (compressed size of awardext.rom). The result 1DDAD will be the last byte of awardext. Press control-c to copy the value. Leave calc running and switch to Winhex.

In Winhex highlight the byte "25" at 13FFD. That is the first byte of awardext. Notice the third byte is "2D". Click Edit-Define Block. 13FFD is already entered in for us since we highlighted the byte first. Click in the End field and press control-v to paste 1DDAD from calc. Using copy/paste is just to avoid typos and save time. You can type the values if you prefer. Notice in the status bar the size of the selection is 9DB1.

Press Alt-G and paste again 1DDAD. Notice the last byte is 00. Notice the third byte following the selection is "2D". Click Edit-> Copy Block -> Into New File. Save the file as awardext.lha.

Copy the compressed size "1B6F" of the next module ACPITBL.BIN from the cbrom report. Go back to Calc. It should still have 1DDAD displayed. Click add and paste 1B6F. Copy the result 1F91C. Leave calc running and switch to Winhex.

In Winhex highlight "24" at 1DDAE which is the first byte of ACPITBL.BIN. Click Edit-Define Block. 1DDAE is already entered in for us since we highlighted the byte first. Click in the End field and press control-v to paste 1F91C from calc. Notice the size of the selection in the status bar is 1B6F.

Press Alt-G and paste again 1F91C. Notice the last byte is 00. Notice the third byte following the selection is "2D". Click Edit-> Copy Block -> Into New File. Save the file as ACPITBL.lha.

Check the size (30D) of AwardBmp.bmp in cbrom report. Switch back to calc. It should still display 1F91C. Add 30D and copy the result 1FC29. We're done with calc so you can close it.

In Winhex highlight "25" at 1F91D which is the first byte of AwardBmp.bmp. Click Edit-Define Block. 1F91D is already entered in for us since we highlighted the byte first. Click in the End field and press control-v to paste 1FC29 from calc. Notice the size of the selection in the status bar is 30D. Scroll down a bit to check the end of the selection. (No need to jump to an offset this time since the selection is so small.) Notice the last byte is 00. Notice the third byte following the selection is "2D". Click Edit-> Copy Block -> Into New File. Save the file as AwardBmp.lha (or epa.lha if you prefer).

We don't need to copy out the next module ggroup.bin, but make a note that it begins at 1FC2A.

You can close EP45UD3P.F8 in Winhex and close or minimize the program.

------------------------------------------------------------------------------------------

Next let's edit the EPA logo to make it more compressible.

Right-click AwardBmp.lha, click WinRar -> Extract here.

Drop AwardBmp.bmp into WinHex.

We are going to keep the header (first 7 bytes) and the footer (from "RGB" to the end) and zero out the rest.

Scroll to the end of the file and highlight a random zero byte before RGB. Click Edit -> Define Block. The ending address is filled in for us. Put "E" for beginning address. You can scroll up to see what you've selected.

If Winhex is in Read-only mode, right-click on the left pane, Click Select Mode, and choose Default Edit Mode.

Click Edit -> Fill Block. In "Fill with hex values" box enter 00 and click OK.

Save (click floppy icon and toolbar) and close AwardBmp.bmp. Close or minimize WinHex.


Next we have to recompress the new AwardBmp.bmp.

For that we'll use a dummy bios. Copy empty.bak to dummy.bin.

At the Command Prompt type:

cbrom dummy.bin /epa AwardBmp.bmp

(Remember you can just type "aw" TAB.)

Rename the new file bios.rom to AwardBmpmod.lha (or epamod.lha if you prefer).

Delete AwardBmp.bmp and dummy.bin.

Drop AwardBmp.lha and AwardBmpmod.lha into Winhex and make a note of the file size for each.

old epa size: 781
new epa size: 94

Close those 2 files now.


------------------------------------------------------------------------------------------

Now that we've done the grunt work of extracting the modules and compressing the EPA things will get more interesting.

For Award BIOS approximately the second half of the BIOS can be found in RAM.

Let's check the system module for a place to put the SLIC.

Right-click EP45UD3P.lha, click WinRar -> Extract here

Note: Sometimes the uncompressed system file has the same name as the whole bios file. In that case double-click the .lha and drop the .BIN into a different folder to work with it. Or you could rename the whole bios file. Don't change the names of any of the uncompressed modules.

Open EP45UD3P.BIN in Winhex.

Press Alt-G, put 1E000.

I use the section of zeroes above 1E000 for putting the SLIC. In some bioses data in 1DF00-1DFFF may get changed in RAM so to be safe always leave a 100h buffer between the bottom of the SLIC and 1E000. Since there's limited space in this BIOS and we'll need to write more data underneath it (approximately a second SLIC's worth) lets use 1DC40 for SLIC location. That still gives us a couple rows of buffer zeroes abvoe the SLIC.

Note: There's also a section of FF's above offset 10000 that would probably work but I haven't used it yet. Once it's been tested working that may be a better location.

Now we need to calculate the pointer.

System file offset + E0000 =  RAM location

1DC40 + E0000 = FDC40 = 00 0F DC 40

Reverse the order of the bytes to make the pointer.

Pointer = 40 DC 0F 00

Close EP45UD3P.BIN for now.

------------------------------------------------------------------------------------------

Next we'll edit ACPITBL.BIN.

Right-click ACPITBL.lha, click WinRar -> Extract here

Drop ACPITBL.BIN into Winhex.

The number after "RSDT" is the size. You need to add 4h.

In this case change the value from "40" to "44".

Change the oem id & table id to match the SLIC that you're using.

In this case change "GBT   " to "_ASUS_" and "GBTUACPI" to "Notebook"

Next we need to paste 4 bytes at the end of RSDT and enter the pointer.

Click on offset 40h. (It corresponds to the "F" in FXCP.)

Click Edit-> Paste Zero Bytes. Put 4 and click OK.

Change the new bytes (40h-43h) to the pointer address "40 DC 0F 00"

Note: It's vital that the pointer address be correct or the computer may not boot. No pressure ;)

Save ACPITBL.BIN and close the file.

Before:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000000   52 53 44 54 40 00 00 00  01 00 47 42 54 20 20 20   RSDT@.....GBT  
00000010   47 42 54 55 41 43 50 49  31 2E 30 42 47 42 54 55   GBTUACPI1.0BGBTU
00000020   01 01 01 01 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000040   46 58 43 50 74 00 00 00  46 41 43 50 74 00 00 00   FXCPt...FACPt...


After:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000000   52 53 44 54 44 00 00 00  01 00 5F 41 53 55 53 5F   RSDTD....._ASUS_
00000010   4E 6F 74 65 62 6F 6F 6B  31 2E 30 42 47 42 54 55   Notebook1.0BGBTU
00000020   01 01 01 01 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000040   40 DC 0F 00 46 58 43 50  74 00 00 00 46 41 43 50   @?.FXCPt...FACP


Now we need to compress ACPITBL.BIN

Copy empty.bak to dummy.bin

At the command prompt type:

cbrom dummy.bin /acpi ACPITBL.BIN

Remember you can just type "ac" TAB.

Rename the newly created "bios.rom" to "acpimod.lha"

Delete ACPITBL.BIN and dummy.bin

Drop ACPITBL.lha and acpimod.lha into Winhex to check the file sizes and note the increase.

Old acpi size: 7,023 bytes
New acpi size: 7,043 bytes (20 byte increase)

------------------------------------------------------------------------------------------

Next we need to calculate how much space is left over after shrinking the EPA and increasing the ACPI.

Whatever amount is left is what the compressed system needs to increase by.

  781 old epa size
-  94 new epa size
-  20 increased acpi
  ---
  667 bytes left


Drop EP45UD3P.lha into Winhex to check its size and then close it.

Old compressed system: 81,916

Add 667 to the old size.

New compressed system needs to be: 82,583

------------------------------------------------------------------------------------------

Now that we know what size the compressed system needs to be, we're ready to edit the system file.

Drop EP45UD3P.BIN in Winhex.

Press Alt-G and put 1DC40

Drop ASUS.BIN into Winhex

With the ASUS.BIN tab press Control-A to select all and Control-C to copy it.

Click the EP45UD3P.BIN tab. You should still be at offset 1DC40.

If Winhex is in Read-only mode, right-click on the left pane, Click Select Mode, and choose Default Edit Mode.

Click Edit -> Clipboard Data -> Write

Note: It's important to use Write, not Paste since we want to overwrite the zeroes with the SLIC, not insert new bytes.

One SLIC won't be enough to increase the compressed system to the size we need, but 2 SLIC's should be about right.

Drop HP.BIN into Winhex.

In the HP.BIN tab press Control-A to select all and Control-C to copy it.

Click the EP45UD3P.BIN tab.

Click the byte at offset 1DDD0 (a couple rows below the Asus SLIC).

Click Edit -> Clipboard Data -> Write


If I'm editing the system file anyway I usually add some SLP names for XP activation.

You could type ASUS_FLASH after one of the SLIC's but I usually put names in the IBM Trademark message.

Scroll down a bit so 1E000 is near the top of the window.

Click on the "I" in INTERNATIONAL at 1E127. Press the space bar through the "P" in CORP.

At the beginning of the spaces put ASUS_FLASH and Hewlett-Packard. You can combine them to ASUS_FLASHewlett-Packard.

If you want to add SLP for Dell you can type "Dell System" beginning at offset 1E061. (It has a more restrictive range so it can't go in the trademark message.) I'll skip Dell for this mod.

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
0001E110   20 49 42 4D 20 49 53 20  41 20 54 52 41 44 45 4D    IBM IS A TRADEM
0001E120   41 52 4B 20 4F 46 20 41  53 55 53 5F 46 4C 41 53   ARK OF ASUS_FLAS
0001E130   48 65 77 6C 65 74 74 2D  50 61 63 6B 61 72 64 20   Hewlett-Packard
0001E140   20 20 20 20 20 20 20 20  20 20 20 2E 55 8B EC 56              .U뗭V


Save EP45UD3P.BIN but keep it open because most likely it will require further editing.

Let's see what it compresses to.

Copy empty.bak to dummy.bin

At the command prompt type:

cbrom dummy.bin /other 5000:0 EP45UD3P.BIN

Drop bios.rom into Winhex to check the size. It is 82,576 bytes. Close bios.rom.

Delete bios.rom and dummy.bin.

We need the new system to be 82,583 so we need it to increase 7 more bytes.

In Winhex add "LENOVO1" after "Hewlett-Packard" in the trademark message and save EP45UD3P.BIN again.

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
0001E110   20 49 42 4D 20 49 53 20  41 20 54 52 41 44 45 4D    IBM IS A TRADEM
0001E120   41 52 4B 20 4F 46 20 41  53 55 53 5F 46 4C 41 53   ARK OF ASUS_FLAS
0001E130   48 65 77 6C 65 74 74 2D  50 61 63 6B 61 72 64 4C   Hewlett-PackardL
0001E140   45 4E 4F 56 4F 31 20 20  20 20 20 2E 55 8B EC 56   ENOVO1     .U뗭V

Copy empty.bak to dummy.bin

At the command prompt type:

cbrom dummy.bin /other 5000:0 EP45UD3P.BIN

Note: You can press the UP arrow once to bring up the last command you typed.

Drop bios.rom into Winhex to check the size. It's now 82,583 bytes. Not bad for second try.

Close everything that's open in Winhex.

Rename bios.rom to systemmod.lha

Delete EP45UD3P.BIN and dummy.bin

------------------------------------------------------------------------------------------

All our modules are done, so we're ready to rock and roll and write them into the bios!

Drop EP45UD3P.F8 in Winhex.

We need to write the modules in the same order as in the original BIOS. (Refer to cbrom /d report.)

Drop in systemmod.lha

On the systemmod.lha tab, press Control-A to select all and Control-C to copy.

Click the EP45UD3P.F8 tab

If Winhex is in Read-only mode, right-click on the left pane, Click Select Mode, and choose Default Edit Mode.

You should already be at offset 0.

Click Edit-> Clipboard Data -> Write

The block is automatically selected. In the status bar you can see it is 0-14296.

Press Alt-G, and put 14297

Change the byte at 14297 to FF. (This is only done after the system module.)

Press ESC to unselect the previous block

Drop awardext.lha in Winhex.

On the awardext.lha tab, press Control-A to select all and Control-C to copy.

Click the EP45UD3P.F8 tab

Click in 14298 if you aren't there already.

Click Edit-> Clipboard Data -> Write

The block is automatically selected. In the status bar you can see it is 14298-1E048.

Press Alt-G, and put 1E049

Press ESC to unselect the previous block

Drop acpimod.lha into Winhex.

On the acpimod.lha tab, press Control-A to select all and Control-C to copy.

Click the EP45UD3P.F8 tab

Click 1E049 if you aren't on it already.

Click Edit-> Clipboard Data -> Write

The block is automatically selected. In the status bar you can see it is 1E049-1FBCB

Press Alt-G, and put 1FBCC

Press ESC to unselect the previous block

Drop AwardBmpmod.lha in Winhex.

On the AwardBmpmod.lha tab, press Control-A to select all and Control-C to copy.

Click the EP45UD3P.F8 tab

Click 1FBCC if you're not there already.

Click Edit-> Clipboard Data -> Write

The block is automatically selected. In the status bar you can see it is 1FBCC-1FC29.

Scroll down a little so you can see the end of the block. You can see the next module ggroup.bin begins at 1FC2A as expected and the third byte is "2D".

We're done writing modules so save EP45UD3P.F8 and close everything in Winhex!

------------------------------------------------------------------------------------------

The only step left is to add & release a module with cbrom to correct the checksum.

This bios has a UTS64K.BIN module at the end. Modules added after UTS64K.BIN won't work correctly in a bios, but since we're releasing the module that we're adding anyway it doesn't matter.

Before using cbrom on the new bios I like to make an extra copy of it to compare the changes cbrom makes.

Click EP45UD3P.F8 and press Control-C to copy and press Control-V to paste. At the end of the file name "Copy of EP45UD3P.F8" you can add "before cbrom".

At the command prompt type:

cbrom EP45UD3P.F8 /isa iasus.bin

cbrom EP45UD3P.F8 /isa release

(Remember for the second command you can press UP arrow and just change the last word.)

You can delete the extra files cbrom made: bios.rom, FILE_BUF.STV, original.tmp

------------------------------------------------------------------------------------------

Now to double check the changes made.

Drop "Copy of EP45UD3P.F8 before cbrom" into Winhex.

Next drop "EP45UD3P.F8" into Winhex.

Click Tools -> File Tools -> Compare

Click OK.

Compare 0 bytes automatically changes to 1048576 bytes, the size of the files.

Click OK again to start the compare. Click OK again to view the report in notepad.

The bytes that changed: EBFFE, EBFFF, EE000, and EE001 are checksum bytes surrounded by FF blocks, so those changes are OK. Some blocks of 00/FE pattern were changed to FF which is fine too. (It would be OK if they changed from FF to 00/FE pattern as well.) We just don't want bytes of actual code to change.

One other double check I do is cbrom /d on the new BIOS file to compare the report to the original.

ex: cbrom EP45UD3P.F8 /d > EP45UD3P.txt

If you already have a EP45UD3P.txt in the directory rename it to "EP45UD3P old.txt" first so it doesn't get overwritten.

All the same modules should be listed. The only difference will be the original size of ACPITBL.BIN (since we added 4 bytes), and the compressed size of EP45UD3P.BIN, ACPITBL.BIN, and AwardBmp.bmp. A program you can use to quickly compare 2 text files is ExamDiff Pro. Any differences will be highlighted.

That's all, the mod is complete!

If uploading the mod for someone else I like to include:
- The .XRM-MS file that matches the SLIC I used.
- The original unmodded BIOS
- The final modded BIOS
- The flash utility (if any) that came with the original BIOS.
- I also include my notes if it's an oem/ssv3 mod, but that's up to you.

After uploading the file make a note of the "delete" link if provided with one in case there's a problem with the mod. That way you could remove it so more people don't use it.
번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
710 하드웨어| SLP 2.0(SLIC table) 구조 gooddew 6878 0 06-17
709 하드웨어| 아수스 윈도우용 플래쉬 업데이트 툴 링크 gooddew 6491 0 06-17
708 하드웨어| BIOS와 CMOS의 차이는 무엇인가? gooddew 7081 0 06-17
707 하드웨어| Hot Flashing gooddew 5877 0 06-17
» 하드웨어| Award ssv3 Zort Guide gooddew 8070 0 06-17
705 하드웨어| 피닉스(Phoenix) 바이오스 비프음으로 고장진단하기 gooddew 7757 0 06-17
704 하드웨어| 부팅중에 나타나는 여러 가지 에러메시지에 대한 설명 gooddew 6510 0 06-17
703 하드웨어| ****바이오스 업그레이드 방법****(텍스트) gooddew 9682 1 06-17
702 하드웨어| 바이오스 CMOS 셋업 메뉴 페이지(텍스트) gooddew 7623 0 06-17
701 하드웨어| NVIDIA - DOS 바이오스 업데이트 gooddew 6027 0 06-17
700 하드웨어| AMI - WINDOWS 바이오스 업데이트 gooddew 8950 0 06-17
699 하드웨어| AMI - DOS 바이오스 업데이트 gooddew 6559 0 06-17
698 하드웨어| AWARD - WINDOWS 바이오스 업데이트 gooddew 6241 0 06-17
697 하드웨어| AWARD - DOS 바이오스 업데이트 gooddew 5822 0 06-17
696 하드웨어| AFU USB 바이오스 업데이트 gooddew 7962 0 06-17
695 하드웨어| AFU WINDOWS 바이오스 업데이트 gooddew 5999 0 06-17
694 하드웨어| AFU DOS 바이오스 업데이트 gooddew 6354 0 06-17
693 하드웨어| 어워드와 아미 바이오스 비프음으로 고장진단확인하기 gooddew 7300 0 06-17
692 하드웨어| 소프트 인증 및 바이오스 업데이트를 하시기전에 확인해야... gooddew 8152 0 06-17
691 하드웨어| OEM 인증 방식이란 gooddew 13455 0 06-17
XE1.11.6 Layout1.4.8