Windows μακρινή θέα κατασκευαστής πρότυπου εξοπλισμού βραβείο BIOS Mod μεθανόλη από προσθέτοντας φέτα τραπέζι με δυναμικός μνήμη διεύθυνση

Windows μακρινή θέα κατασκευαστής πρότυπου εξοπλισμού δραστηριοποίηση κροτίδα μεθανόλη χρειάζομαι έναs SLP 2.0 ( σύστημα κλειδωμένος Preinstallation 2.0) υποχωρητικότητα BIOS μητρικό κύκλωμα. καινούργιος δαυλός κατασκευαστής πρότυπου εξοπλισμού υπολογιστήs έρχεται με έναs, ή προσφορά όχι-so- παλαιόs μητρικό κύκλωμα έναs BIOS ελεύθερος αναβαθμίζω στο έναs ότι υποστηρίζω SLP 2.0 με φέτα τραπέζι και υπογράφω Windows αγορά ( κατασκευαστής πρότυπου εξοπλισμού αστυνομική ταυτότητα και τραπέζι αστυνομική ταυτότητα). εάν εσύ είσαι χρησιμοποιώνταs παλαιότερος υπολογιστήs ή DIY μητρικό κύκλωμα, δικό σουόχι έξω του τύχη though. Κινέζοs ) σιδηροπρίονο έχω κατάφερα σε mod the BIOS σεαντικαθιστώ ήσυμπεριλαμβάνω the φέτα (λογισμικό άδεια εσωτερικός Code) τραπέζι into the ACPI τραπέζι. οπωσδήποτε, the αντικατάσταση του υπαρκτός ACPI τραπέζι μπορώ προκαλώ απώλεια του βέβαιος χαρακτηριστικό, διάστημα πρόσθεση του φέτα τραπέζι μπορώincompatible επάνω υπολογιστήs με διαφορετικός μέγεθος του μνήμη, όπως BIOS is σκληρός patched μαζί με SLIC’s τραπέζι physical μνήμη διεύθυνση ο οποίος περιορίζω the mod BIOS στο πολυβόλο αυτού’ been τροποποίησα μόνο.

So, the μεθανόλη σε mod BIOS γιαWindows μακρινή θέα κατασκευαστής πρότυπου εξοπλισμού υποστηρίζω με προηγουμένως μεταχειρισμένος κατάσταση φέτα μνήμη διεύθυνση is problematic όπως the μνήμη διεύθυνση θα να είμαι άλλαξα πότε the μνήμη μέγεθος άλλαξα, και users χρειάζομαι τροποποιώ the φέτα διεύθυνση μέσαACPITBL.BIN ή else αυτοί wont’ είμαι ικανός σε χώρος αποσκευών αυτοκινήτου into the σύστημα, disallowing μαζική κυκλοφορία του mod κατασκευαστής πρότυπου εξοπλισμού BIOS. ούτως the Κινέζοs ) σιδηροπρίονο εξευγενισμένος the τεχνικός σε επιτρέπω δυναμικός physical μνήμη διεύθυνση allocation του φέτα τραπέζι is been μεταχειρισμένος. με δυναμικός μνήμη allocation, physical μνήμη μέγεθος μπορώ να είμαι άλλαξα χωρίs οποιοσδήποτε consent του BIOS μη- υποχωρητικότητα. δίπλα σε, προηγούμενος μεθανόλη του προσθέτοντας φέτα τραπέζι μπορώ χρειάζομαι users σε λάμψη BIOS into ROM 2 ώρα, πρώτος μαζί με mod BIOS και αργότερα μαζί με πρωτότυπος BIOS, διάστημα the BIOS με this εξευγενισμένος μεθανόλη με δυναμικός μνήμη διεύθυνση καταγραφή χρειάζομαι μόνο έναs λάμψη σε most.

εργαλεία και utilities χρειάστηκα:

  1. MODBIN6
  2. CBROM219
  3. WinHEX
  4. Hiew 7.4 (Hiew32) (μόνο για βραβείο BIOS, εάν έχειs Hiew32 you όχι μακρύς χρειάζομαι IDA 5.0)
  5. IDA 5.0
  6. UltraEdit

The διδασκαλία σε δημιουργώ έναs mod μακρινή θέα κατασκευαστής πρότυπου εξοπλισμού BIOS με δυναμικός μνήμη διεύθυνση allocation ικανότητα is complicated, και πρότεινα για ειδικός μόνο. δίπλα σε, this άρθρο is μετέφρασα από έγγραφα μέσα Κινέζοs ), so the ακρίβεια του μετάφραση is όχι εγγύηση. εάν you αλήθεια θέλω σε φτιάχνω δικό σου BIOS είμαι ικανός ενεργοποιώ κατασκευαστής πρότυπου εξοπλισμού εκδοχή του Windows μακρινή θέα, προσπαθώ the έτοιμος-mod BIOS ( με κατάσταση διεύθυνση), λογισμικό βάση μακρινή θέα γεμάτος κατασκευαστής πρότυπου εξοπλισμού BIOS άμιλλα, ή λογισμικό βάση κατασκευαστής πρότυπου εξοπλισμού BIOS άμιλλα εργαλείο. άλλος δημοφιλήs μακρινή θέα κροτίδα συμπεριλαμβάνωTimerLock ο οποίος automatically κάνω αίτησηTimerStop οδηγόs This προπαρασκευαστικός is απόδειξη του κοίλος μόνο, όπως καθένας BIOS is διαφορετικός, και hence the αξία ή βήματα ή πράγμα τροποποίησα μπορώ να είμαι διαφορετικός.

προειδοποιώ: αλλαγή σε BIOS μπορώ άκυρος εγγύηση, προκαλώ υπολογιστήs σε ανίκανος σε χώρος αποσκευών αυτοκινήτου πάνω ή άλλος irrecoverable αποτέλεσμα. κάνω αυτό σε το δικό σου κίνδυνοs.

εάν you χρειάζομαι βοήθεια επάνω mod BIOS για μακρινή θέα δραστηριοποίηση, δηλώνω την αναχώρησηthis thread.

  1. δημιουργώ έναs προσωρινός ντοσσιέ ( μακρινή θέα ή BIOS is you αρέσω) σε ευρετήριο προγονικό (C:\).
  2. κατεβάζω CBROM 2.19 ( εξαρτώμαι επάνω πού you κατεβάζω, αυτό μπορώ χρειάζομαι σε rename the εκτελέσιμος σε cbrom.exe όπως διευκρίνισα σε αυτό άρθρο), MODBIN6 2.01.01, SLIC.BIN ( όνομα acpislic.bin ο οποίος μπορώ να είμαι ποικίλος, ο οποίος is the φέτα τραπέζι μερίδα του BIOS) από κατεβάζω σύνδεσμος επάνω, και γλώσσα αυτούς μέσα στο προσωρινός ντοσσιέ.
  3. εκχύλισμα, εξάγω ή σώζω the XXXXXXXX.BIN ( όνομα μπορώ να είμαι άλλαξα, ο οποίος is the μητρικό κύκλωμα BIOS ότι you θέλω σε σιδηροπρίονο γiα Windοws μακρινή θέα κατασκευαστής πρότυπου εξοπλισμού δραστηριοποίηση). εύκολα δρόμος is σε απλά κατεβάζω the BIOS firmware από το υπολογιστήs ή μητρικό κύκλωμακατασκευαστής όπως ASUS, Gigabyte, MSI, πικραίνω, HP, Dell, Lenovo και etc.
  4. καθορίζω ο οποίος BIOS μερίδα του αρχείο is the χωράφι του RSDT…FACS τοποθέτησα:
    1. μέσαανύψωσα κόμμα υπόσχομαι (ήαχρηστεύω UAC), δακτυλογραφώ the επόμενος κόμμα:

      CBROM.EXE XXXXXX.BIN d

      εσύ θα βλέπω κάτι σαν υπό οθόνη:

      CBROM V2.19 (CAward) λογισμικό 2001 όλα τα δικαιώματα κατοχυρωμένα.

      ******** XXXXXXXX.BIN BIOS συστατικό********

      όχι Item- όνομα πρωτότυπος- μέγεθος συμπίεση- μέγεθος πρωτότυπος- αρχείο- όνομα
      =====================================================
      0. σύστημα BIOS 20000h128.00K() 13B3Eh78.81K() 83IID318.BIN
      1. XGROUP CODE 0DFF0h55.98K() 0993Ch38.31K() awardext.rom
      2. ACPI τραπέζι 043E5h16.97K() 01A46h6.57K() ACPITBL.BIN
      3. Οργανισμός Προστασίας Περιβάλλοντος LOGO 0168Ch5.64K() 002AAh0.67K() AwardBmp.bmp
      4. YGROUP ROM 0F570h61.36K() 0482Dh18.04K() awardeyt.rom
      5. σύνολο ROM[ 0] 04CD0h19.20K() 02261h8.59K() _EN_CODE.BIN
      6. Other404E0000(:) 03476h13.12K() 00EB4h3.68K() 64N8IIP.BMP
      7. Other404F0000(:) 0345Dh13.09K() 008B9h2.18K() 64N8P4P.BMP
      8. Other40500000(:) 0345Dh13.09K() 008CCh2.20K() 64N8P4HT.BMP
      9. Other40510000(:) 04286h16.63K() 00A7Eh2.62K() 64N8P4E.BMP
      10. Other40520000(:) 04286h16.63K() 00B58h2.84K() 64N8P4HE.BMP
      11. Other40530000(:) 0345Dh13.09K007D9h1.96K()() 64N8ICPD.BMP
      12. PCI ROMA[] 0D000h52.00K07DA8h31.41K()() RTM8100.LOM

      σύνολο συμπίεση code διάστημα = 4B000h300.00K()
      σύνολο συμπίεση code μέγεθος = 31788h197.88K()
      παραμένω συμπίεση code διάστημα = 19878h102.12K()

      ** Micro Code πληροφορία**
      εκσυγχρονίζω αστυνομική ταυτότητα CPUID | εκσυγχρονίζω αστυνομική ταυτότητα CPUID | εκσυγχρονίζω αστυνομική ταυτότητα CPUID | εκσυγχρονίζω αστυνομική ταυτότητα CPUID
      ——————+——————–+——————–+——————
      PGA478 2E 0F29|

    2. μέσα επάνω περίπτωση, εσωτερικός XXXXXXX.BIN, υπάρχει όχι ggroup.bin ( πού “RSDTFACPDSDTAPICHPETMCFGFACS” ή όμοιος ACPI τραπέζι index χωράφι is τοποθέτησα), so RSDT…FACS χωράφι is τοποθέτησα εσωτερικός the σύστημα BIOS μονάδα χωρητικότητας μνήμης υπολογιστή codeδΈ­, και τροποποιώ this χρειάζομαι σε χρήση MODBIN6. εάν δικό σου BIOS περιέχω ggroup.bin, εσύ μπορείs χρήση CBROM σε εκχύλισμα και χώρισα ggroup.bin BIOS τμήμα όπως αρχείο.

      υπό is the δείγμα CBROM παραγωγή του “CBROM.EXE XXXXXX.BIN d” κόμμα για BIOS με ggruoup.bin (Gigabyte GA-G1975X BIOS όπως παράδειγμα):

      όχι Item- όνομα πρωτότυπος- μέγεθος συμπίεση- μέγεθος πρωτότυπος-Fi
      ================================================
      0. σύστημα BIOS 20000h128.00K1492Ah82.29KG1975X.BIN()()
      1. XGROUP CODE 0F7B0h61.92K0A8E6h42.22Kawardext.rom()()
      2. Οργανισμός Προστασίας Περιβάλλοντος LOGO 0168Ch5.64K0030Dh0.76KAwardBmp.bmp()()
      3. σύνολο ROM18[] 00EF0h3.73K00B77h2.87Kggroup.bin()()
      4. YGROUP ROM 07140h28.31K04D7Ch19.37Kawardeyt.rom()()
      5. FNT1 ROM 02D28h11.29K02038h8.05Kfont1.awd()()
      6. FNT2 ROM 03278h12.62K01F18h7.77Kfont2.awd()()
      7. FNT3 ROM 025FCh9.50K017FBh6.00Kfont3.awd()()
      8. σύνολο ROM[ 0] 06010h24.02K02787h9.88K_EN_CODE.BIN()()
      9. σύνολο ROM[ 1] 06510h25.27K02A1Fh10.53K_FR_CODE.BIN()()
      10. σύνολο ROM[ 3] 06420h25.03K02A75h10.61K_GR_CODE.BIN()()
      11. σύνολο ROM[ 4] 068D0h26.20K02A74h10.61K_SP_CODE.BIN()()
      12. σύνολο ROM[ 8] 04EF0h19.73K02575h9.36K_B5_CODE.BIN()()
      13. σύνολο ROM10[] 04F60h19.84K025E9h9.48K_GB_CODE.BIN()()
      14. σύνολο ROM11[] 05E50h23.58K02A85h10.63K_JP_CODE.BIN()()
      15. PCI ROMA[] 0F200h60.50K09594h37.39KICH7RAID.BIN()()
      16. PCI ROMB[] 10000h64.00K09A15h38.52Kb169d.pxe()()
      17. LOGO1 ROM 00B64h2.85K00520h1.28Kdbios.bmp()()
      18. PCI ROMC[] 04000h16.00K02287h8.63KITE8212.ROM()()
      19. Other40670000(:) 01AADh6.67K00B75h2.86KPPMINIT.ROM()()
      20. OEM0 CODE 025B3h9.42K01B37h6.80Kdbf.bin()()
      21. σύνολο ROM24[] 00132h0.30K0011Eh0.28KSPECIAL.FNT()()
      22. ACPI τραπέζι 09640h37.56K0352Ch13.29KASUSACPI.BIN()()

      σύνολο συμπίεση code διάστημα = 67000h412.00K()
      σύνολο συμπίεση code μέγεθος = 57613h349.52K()
      παραμένω συμπίεση code διάστημα = 0F9EDh62.48K()

      ** Micro Code πληροφορία**
      εκσυγχρονίζω αστυνομική ταυτότητα CPUID | εκσυγχρονίζω αστυνομική ταυτότητα CPUID | εκσυγχρονίζω αστυνομική ταυτότητα CPUID | Upd
      ——————+——————–+——————–+—–
      SLOT1 0A 0F32| PGA423 2C 0F25| 00000000 00000000 0000
      00000000 00000000 0000 0000| 00000000 00000000 0000
      00000000 00000000 0000 0000| 00000000 00000000 0000
      00000000 00000000 0000 0000| 00000000 00000000 0000
      00000000 00000000 0000 0000| 00000000 00000000 0000
      00000000 00000000 0000 0000|

    3. για BIOS με ggroup.bin, εκχύλισμα the ggroup.bin μαζί με επόμενος κόμμα:

      CBROM.EXE G1975X.bin σύνολο εκχύλισμα

      εσύ θα έπρεπε βλέπω the επόμενος παραγωγή όπως υπό screenshot:

      CBROM V2.19 (CAward) λογισμικό 2001 όλα τα δικαιώματα κατοχυρωμένα.
      εισέρχομαι έναs εκχύλισμα όνομα αρχείου :(ggroup.bin)
      [σύνολο] ROM is εκχύλισμα σε ggroup.bin

    4. χωρίζω, σώζω και εκχύλισμα the ACPITBL.BIN από χρησιμοποιώνταs the επόμενος κόμμα:

      CBROM.EXE 050318.BIN acpi εκχύλισμα

      εσύ θα έπρεπε βλέπω the επόμενος παραγωγή από CBROM:

      CBROM V2.19 (CAward) λογισμικό 2001 όλα τα δικαιώματα κατοχυρωμένα.
      εισέρχομαι έναs εκχύλισμα όνομα αρχείου :(ACPITBL.BIN)
      [ACPI] ROM is εκχύλισμα σε ACPITBL.BIN

    5. για BIOS χωρίs ggroup.bin ( εκείνοι με ggroup.bin μπορώ skip this σκαλί), λανσάρω MODBIN6, διαλέγω XXXXXXXX.BIN ( μουστάκι να είμαι όνομα μέσα .BIN επέκταση, εάν όχι rename αυτό. αυτού’ the BIOS τροποποιώ συμπεριλαμβάνω the φέτα τραπέζι so ότι αυτού’ SLP 2.0 υποχωρητικότητα). κάνω όχι κλείνω το παράθυρο του MODBIN6, και περιμένω the ORIGINAL.BIN σε να είμαι εκχύλισμα και δημιούργησα μέσα στο προσωρινός ντοσσιέ.
  5. ακολουθώ the υπό οδηγίεs τροποποιώ ACPITBL.BIN:
    1. τρέχω UltraEdit και ανοίγω ACPITBL.BIN BIOS εικόνα αρχείο.
    2. ψάχνω text για RSDT.
    3. πίσω RSDT is the μονάδα χωρητικότητας μνήμης υπολογιστή ότι υποδεικνύω the μήκος του RSDT τραπέζι. προσθέτω 4 σε this αριθμόs μέσα HEX σχήμα. για παράδειγμα, εάν the αξία υπέδειξα is 002C, τροποποιώ και εκδίδω the αξία σε γίνομαι 0030. σημείωση ότι the αντιστρέφω sequence του ζευγάρια πότε keying μέσα UltraEdit Hex εκδότηs (i.e. εισέρχομαι όπως 30 00 αντί για 00 30).
    4. παρεμβάλω ( όχι αντικαθιστώ) συμπληρωματικός 4 μονάδα χωρητικότητας μνήμης υπολογιστή του 00 αξία μετά the πρωτότυπος μήκος (002C) του RSDT τραπέζι ( κανονικά μέσα μπροστινός του FACPt, ή FXCPt για βέβαιος Gigabytes mobo). εσύ μπορείs αντίγραφο και παρελθών the 4 μονάδα χωρητικότητας μνήμης υπολογιστή του 00 από άλλος τοποθετώ σε this τοποθετώ. This modification και αλλαγή is προμηθεύω διάστημα σε κατάστημα the φέτα τραπέζι μέσα μέλλον βήματα, so θυμάμαι this διεύθυνση ( για this οδηγόs, αναλαμβάνω this τοποθετώ is SLICaddress). σε αυτό παράδειγμα, SLICaddress αξία is 002C.

      ACPITBL.BIN πριν τροποποιώ
      πριν modification του ACPITBL.BIN μέσα UltraEdit

      ACPITBL.BIN μετά τροποποιώ
      μετά modification του ACPITBL.BIN μέσα UltraEdit σε allocate διάστημα για φέτα τραπέζι.

    5. ελέγχω the σύνολο μήκος του ACPITBL.BIN εάν the μήκος μπορώ να είμαι διαχωρισμένος μέσα γεμάτος από 4. εάν όχι, προσθέτω 1 σε 3 μονάδα χωρητικότητας μνήμης υπολογιστή του 00 στο τέλος του BIOS εικόνα αρχείο so ότι the μήκος μπορώ να είμαι διαχωρισμένος από 4 χωρίs οποιοσδήποτε παραμένω. αυτό είναι σε εξασφαλίζω ότι μετά συγχωνεύω με SLIC.BIN εικόνα αρχείο, the κατάδυση με το κεφάλι διεύθυνση του φέτα τραπέζι μπορώ να είμαι διαχωρισμένος από 4 χωρίs παραμένω επίσηs.

      ACPITBL.BIN πριν τροποποιώ για 4 διαίρεση
      ελέγχω εάν the μήκος του ACPITBL.BIN (the τελευταίοs διεύθυνση του αρχείο + 1) μπορώ να είμαι διαχωρισμένος από 4 χωρίs παραμένω. σε αυτό παράδειγμα, πριν this σκαλί modification, the τελευταίοs μονάδα χωρητικότητας μνήμης υπολογιστή έχει HEX διεύθυνση του 43E8, so the μήκος του αρχείο is 43E9, κανόνι να είμαι διαχωρισμένος από 4 μέσα γεμάτος χωρίs παραμένω.

      ACPITBL.BIN μετά τροποποιώ για 4 διαιρώ
      μετά 4 διαίρεση ελέγχω modification, πρόσθεσα 3 00 αξία μονάδα χωρητικότητας μνήμης υπολογιστή.

    6. τροποποιώ OEM_ID και OEM_Table_ID σύμφωνα με δικό σου απαίτηση ( κανονικά _ASUS_ και σημειωματάριο). αναφέρομαιβελτίωσα προσθέτω φέτα τραπέζι διδασκαλία σε σκαλί 8 του τμήμα 2 για περισσότερο πληροφορία.
    7. σώζω the αρχείο.
    8. εκτελώ the επόμενος κόμμα συγχωνεύω και patch the φέτα τραπέζι περιεχόμενα μαζί με τροποποίησα ACPITBL.BIN σε αποκτώ the τελικός ηλικία εργασίας αντίγραφο του ACPITBL.BIN:

      αντίγραφο ACPITBL.BIN B + SLIC.BIN B ACPI.BIN B

      σημείωση σύμφωνα με δικό σου απαίτηση, χρήση the διορθώνω ACPI.BIN, i.e. ASUS για ASUS κατασκευαστής πρότυπου εξοπλισμού αστυνομική ταυτότητα, Lenovo για Lenovo κατασκευαστής πρότυπου εξοπλισμού αστυνομική ταυτότητα και etc.

  6. ακολουθώ the υπό βήματα βρίσκω the θέση του διάστημα ότι προσωρινά κατάστημα the αξία του διεύθυνση του κατάδυση με το κεφάλι του κάθε τραπέζι μέσα στο code του ORIGINAL.BIN ή ggroup.bin. This διεύθυνση θα να είμαι ανέλαβα όπως TempBuffer_Address:
    1. τρέχω Ultract σε ανοίγω ORIGINAL.BIN ή ggroup.bin.
    2. εκτελώ IDA.

      IDA

    3. κλικ επάνω πηγαίνω στο εισέρχομαι IDA. τότε διαλέγω και ανοίγω ORIGINAL.BIN αρχείο.
    4. μέσα στοβάρος έναs καινούργιος αρχείοτηλεφωνικός θάλαμος, κάτω the τμήμα τουδιαδικασία δακτυλογραφώ”, γκρεμίζω the μενού και διαλέγωακέραιος 8086× processors80686p:”.

      διαδικασία δακτυλογραφώ του IDA

    5. μετά επιλεγμένος, χτυπάω the “ θέτωκουμπί στα δεξιά.
    6. κλικ επάνωκαλάκουμπί, και τότε χτυπάω επάνωναικουμπί πότε ρώτησα σε confirm “Do you want to change the processor type to 80686p?”

      Confirm Processor Type Change

    7. In dialog box asked to confirm “Do you want to disassemble it as a 32-bit code?”, press on “No” button as manipulation will be done in 16-bit mode.

      IDA choose bit mode

    8. In the Strings Window to the right, find and locate the RSDT…FACS character string sequence, and double click on it.

      RSDT string in Strings Window

    9. Position the cursor at the location of the R character. Then press “A” key, and then RSDT…FACS character string will be displayed. This text sequence of RSDT…FACS will be called ACPItables.

      R position
      Positioning cursor at the line of R.

      String Windows A Press
      After pressing A key.

    10. Position the cursor after the RSDT…FACS string ACPItables (db 1EH).

      After ACPItables

      Press the “C” key. A block of Assembly code will be displayed.

      Assembly code

    11. But there is remaining code that hasn’t been disassembled into Assembly code. So position the cursor at the first remained assembled code. In this case, it’s line of unk_CC49 after the RSDT…FACS string ACPItables provided by db 1Eh. Then press the “C” key to convert and disassemble the remaining BIOS byte code.
    12. Move the cursor across the lines of the following “CALL” block.

      Call Block

    13. Watch out for the “CALL” line that can pop up code like below:

      push eax
      push cx
      push ebp
      xor ebp, ebp
      mov cx, TABLE_Numbers (temporarily use TABLE _Numbers to represent a value)
      mov edi, eax

      In this example, it’s the line of “call sub_CCD4″.

    14. Double click on sub_CCD4 to go to the code section of sub_CCD4. If the current display mode is in graphic, right click and select “TEXT View” on the context menu to switch to text mode.
    15. Inside this block of code, retrieve the 3 important variables TABLE_Numbers,ACPItables_adress,TempBuffer_Adress,and record their value. In this example, the value of the variables are 4, CC20, 89C4 respectively, where addresses are approximately located at CCDC,CCE2, CD12 respectively.

      Value from Call Block

    16. Use the value of TempBuffer_Adress (89C4 from step above) to match with each table in RSDT…FACS text string, with increment of 4 after each table (matching table). For example:

      89C4 RSDT
      89C8 FACP
      89CC DSDT
      89D0 APIC
      89D4 FACS
      89D8
      89DC

      The previous block of code duplicates the required tables in ACPITBL BIOS image according to RSDT…FACS string into a free memory address, and store these value of addresses in space specified by TempBuffer_Address, and then eventually fill these addresses into some specific tables. So during this process, the storing address value of TempBuffer_Address has to be ensure that cannot and is not changing, or else mod BIOS will fail.

    17. Switch to UltraEdit, and press Ctrl-F keyboard shortcut to search for D889 (i.e 89D8 value, the value of the memory space location after FACS, where it’s a reverse with low byte in front and high byte behind). Pay attention to a few location (82D4, CC91) that lower than FFFF. Most likely you will find it at a few location. If you cannot find any D889 (stored value of 89D8), then you can use directly the address (89D8) located behind the address used to store FACS (89D4). Which mean SLIC table will be appended immediately behind FACS, with string become something like RSDT…FACSSLIC, and can do so by find a location to put this string (move forward 4 bytes or use new location).
    18. However, if you located code like the following near the location of CC91 in IDA, which mean the section of code is used right after “call sub_CCD4″, and use up the memory address of 89D8.

      seg000:CC80 sub_CC80 proc near ; CODE XREF: seg000:CC52p
      seg000:CC80 push ds
      seg000:CC81 mov ax, 0F000h
      seg000:CC84 mov ds, ax
      seg000:CC86 assume ds:nothing
      seg000:CC86 add edi, 10h
      seg000:CC8A and di, 0FFF0h
      seg000:CC8D mov large ds:89D8h, edi
      seg000:CC95 pop ds
      seg000:CC96 assume ds:nothing
      seg000:CC96 retn
      seg000:CC96 sub_CC80 endp

      In this case, use UltraEdit to search for next available address from step above (DC89 for 89DC). If nothing is found, this memory address location can be used to put SLIC table. The problem with this memory address allocation is that there is a skip address or space (89D8) between FACS and SLIC tables. To fix this issue, add the text string of FACSSLIC instead of just SLIC, as FACS table is small and won’t use too much memory.

    19. After modification, you will have the ACPI table index string as either RSDT…FACSSLIC or RSDT…FACSFACSSLIC. To accomodate the first instance of string, the whole string can be move forward (to the front) by 4 bytes as mentioned above. Otherwise, a new location has to be identified to store the new text string. But in the later case where 8 bytes have been added, so we need to find a new location for this longer string. In this example BIOS, there is 11 empty bytes (00) in front of the ACPItables_address (located at CC20). This empty bytes should be unused, beside, in UltraEdit, there is no code that uses the CC18 or CC1C two address locations. So, the new string can be put forward to location with starting address as CC18.

      Add SLIC to BIOS

      Add SLIC to BIOS
      Moving RSDT string forward 8 bytes to accommodate new 8 bytes SLIC table.

    20. Now the anchor address of the RSDT…SLIC string has been moved, and the initial bit address of the string has to be made known to the system. Search in UltraEdit for “20CC” (the original address), you will find it at CCE2 address as found out from step above. Change the 20 to 18 to make it “18CC” (address always reverse when indicate) to indicate the new starting address.

      Add SLIC to BIOS

      Add SLIC to BIOS
      After changing 20 to 18 to indicate new location address.

    21. Since the RSDT string has been moved, the location of FACS table has also moved too (refer to figures above). The original address of FACS table is CC30 while new address is CC28 or CC2C. And, in the rest of the code, the address is been used. So the address of FACS has to be modified too.

      Add SLIC to BIOS

      The value for the original address is address of ACPItables_address (CC20) + 10 which equals to CC30. In UltraEdit, search for 30CC, which should be found at around reference location of CD35. Change the 30CC to 28CC (for CC28) or 2CCC (for CC2C).

      Add SLIC to BIOS

      Add SLIC to BIOS

    22. Next, SLIC table has to be added to the address that is been reserved for it in RSDT tables string in ACPI.BIN.

      seg000:CD74
      seg000:CD74 sub_CD74 proc near ; CODE XREF: seg000:CC5Bp
      seg000:CD74 push edi
      seg000:CD76 push esi
      seg000:CD78 mov esi, 0F0000h
      seg000:CD7E mov eax, [esi+89C4h]; Fill RSDT address to RSDT Ptr
      seg000:CD86 or eax, eax
      seg000:CD89 jz loc_CE32
      seg000:CD8D mov [esi+89C0h], eax ; RSDT Ptr
      seg000:CD95 mov eax, [esi+89CCh]; Fill DSDT address to FACP
      seg000:CD9D or eax, eax
      seg000:CDA0 jz loc_CE32
      seg000:CDA4 mov edi, [esi+89C8h]; FACP
      seg000:CDAC mov es:[edi+28h], eax
      seg000:CDB2 mov eax, [esi+89D4h]; Fill FACS address to FACP
      seg000:CDBA or eax, eax
      seg000:CDBD jz loc_CE32
      seg000:CDC1 mov edi, [esi+89C8h] ; FACP
      seg000:CDC9 mov es:[edi+24h], eax
      seg000:CDCF mov eax, [esi+89C8h]; Fill FACP address to RSDT+24
      seg000:CDD7 or eax, eax
      seg000:CDDA jz loc_CE32
      seg000:CDDE mov edi, [esi+89C4h] ; RSDT
      seg000:CDE6 mov es:[edi+24h], eax
      seg000:CDEC cmp byte ptr [bp+1BFh], 7
      seg000:CDF1 jnz short loc_CDFE
      seg000:CDF3 test dword ptr [bp+1C6h], 200h
      seg000:CDFC jz short loc_CE2F
      seg000:CDFE
      seg000:CDFE loc_CDFE: ; CODE XREF: sub_CD74+7Dj
      seg000:CDFE test byte ptr [bp+2EBh], 4
      seg000:CE03 jz loc_CE2F
      seg000:CE07 mov eax, [esi+89D0h] ; Fill ACPI address to RSDT+28
      seg000:CE0F or eax, eax
      seg000:CE12 jz short loc_CE2F
      seg000:CE14 mov edi, [esi+89C4h]
      seg000:CE1C mov es:[edi+28h], eax
      seg000:CE22 mov edi, eax
      seg000:CE25 push es
      seg000:CE26 call sub_B4BB
      seg000:CE29 pop es
      seg000:CE2A jb short loc_CE2F
      seg000:CE2C call sub_5077

      From the matching table that matches the ACPI tables to respective memory address made in step above, use it to match against the code above. Here, none of the code representing process to fill the data value of 89DC address to RSDT table, so the following code needs to be added:

      mov eax, [esi+89DCh] οΌ› 8 bytes
      mov edi, [esi+89C4h] οΌ›8 bytes
      mov es:[edi+2Ch], eax; 6 bytes, the value of the length of the ACPI tables (SLICaddress which is 2C).

      Addition of these code cannot affect the the rest of the functions’ address, so a few not critical code has to be deleted to free up some space.

      In the above code, after every mov eax, [esi+????h], it’s followed by the block of code as below:

      or eax, eax οΌ› 3 bytes
      jz short loc_CE2F οΌ›2 bytes

      These are verification bits which is precaution method to prevent collapse or fault of system. However, after analysis, there is pair of verification bits that can be removed after reorganization of RSDT table. Thus, remove the data verification parts of RSDT table which is located as below:

      seg000:CDD7 or eax, eax οΌ› 3 bytes
      seg000:CDDA jz loc_CE32 οΌ›2 bytes

      and

      seg000:CE0F or eax, eax οΌ› 3 bytes
      seg000:CE12 jz short loc_CE2F οΌ›2 bytes

      After doing this, only 10 bytes of space is freed up, but the mod requires 22 bytes. In the code above, whenever it fills up the code for RSDT table, it will execute this command:

      mov edi, [esi+89C4h] οΌ› 8 bytes

      But, it does not alter the value of the register or variable when twice it executes the process to fill in the RSDT table. So this command can be executed only once. In fact, if the new code is placed here, this command for the new code can be skipped too. With this adjustment, there will be enough blank space been emptied. Extra space can then be filled up with blank command (90 and nop). The final code will look like this:

      seg000:CDCF
      mov eax, [esi+89C8h]; fill up FACP address to RSDT+24
      mov edi, [esi+89C4h] ; RSDT
      mov es:[edi+24h], eax
      mov eax, [esi+89DCh]
      mov es:[edi+2Ch], eax
      nop
      nop
      nop
      nop
      cmp byte ptr [bp+1BFh], 7
      jnz short loc_CDFE
      test dword ptr [bp+1C6h], 200h
      jz short loc_CE2F
      test byte ptr [bp+2EBh], 4
      jz loc_CE2F
      mov eax, [esi+89D0h] ; fill up ACPI address to RSDT+28
      seg000:CE22 mov es:[edi+28h], eax the address for this command cannot be changed.

      The address location of the code that will be deleted and inserted has to be remembered:

      seg000:CDD7 or eax, eax οΌ› 3 bytes
      seg000:CDDA jz loc_CE32 οΌ›2 bytes
      5 bytes starting from CDD7

      seg000:CE0F or eax, eax οΌ› 3 bytes
      seg000:CE12 jz short loc_CE2F οΌ›2 bytes
      seg000:CE14 mov edi, [esi+89C4h]
      5+8 bytes staring from CE0F

      seg000:CDEC cmp byte ptr [bp+1BFh], 7
      Original location of CDEC to insert all needed code here

    23. The mod process is done, now go back to UltraEdit for last step address modification. This step is best done from bottom up to prevent the code below been jumbled when replacing the front part.

      Add SLIC to BIOS
      Firstly, remove 13 bytes starting from CE0F.

      Add SLIC to BIOS
      Then insert any 4 bytes of random data at the CDEC, then change the value to 4 90 (90h=nop).

      Add SLIC to BIOS
      Copy the code at CDE6 to CDEB, and paste it to address starting from CDEC to reflect the command used: mov es:[edi+2Ch], eax

      Add SLIC to BIOS
      Copy the code at CDCF to CDD6, and paste it to address starting from CDEC to reflect the command used: mov eax, [esi+89DCh]

      Add SLIC to BIOS
      Lastly, remove 5 bytes starting from CDD7.

    24. Save the code.
    25. Verify that the modification of code is correct by using IDA to check if the modified code is correct. If yes, repack the code into the BIOS file.

Disclaimer: This article is for informational and educational purpose only.

IMPORTANT: This is a machine translated page which is provided "as is" without warranty. Machine translation may be difficult to understand. Please refer to original English article whenever possible.

Share and contribute or get technical support and help at My Digital Life Forums.



37 Responses to “Windows Vista OEM Award BIOS Mod Method by Adding SLIC Table with Dynamic Memory Address”

Pages: [2] 1 » Show All

  1. MΓ³ci
    December 30th, 2007 04:08
    37

    Yo!
    Anyone can mod the Asus 1011_013 beta K8N4-E Deluxe bios?
    I have a Turion ML-42 cpu, but i don’t manage the voltage control in my current bios. I can down the voltage, but up is not working…

    Thank you for your time!

  2. Johan
    April 17th, 2007 01:30
    36

    Step 16. Excuse me? what does that text even say? I have read it many times now, and I am no closer to understand what you should achieve at that step. It probably is the most dubious piece of english text I have ever read :)

    Should I duplicate the strings at the address gained from Tempbuffer_address, counting +4 each step?

  3. sixcentgeorge_fr
    April 10th, 2007 19:41
    35

    Got it : step 22 ;]
    ida is to be used with original.bin , ida serves to find the code in the file . when done you have to read the address locations : ce0f , cdd7 ….
    with ultraedit you go to ce0f , cdd7 …to apply the changes , the 2 locations i talk about are used to remove code or eax,eax….

    nearly done 8]

  4. sixcentgeorge_fr
    April 10th, 2007 09:29
    34

    step 15
    first variable : 4 does not it need to be increased by 1 to 5 ?
    and so it is to be used in step 16 if value is 5 in bios : 89dc

    step 17
    file to open in UltraEdit is original.bin [or acpitbl.bin] ? that could be said instead of “shooow sweeeet” keyboard shortcut 8-P

    step22
    what to do the file acpitbl.bin with ida to write code a this place here i am out of knowing what to do ;[

    vista is far to be free for me 8]

  5. obi2001
    April 9th, 2007 21:31
    33

    hello
    Can anyone mod an Asus k8ne deluxe bios 1011 ?

  6. sixcentgeorge_fr
    April 9th, 2007 18:46
    32

    i “made it” for asus k8n4-e deluxe , i have not tested yet , i submit the bios in here .
    i made the archive with original bios and moded one .
    the original is updated with latest pci_bios roms for nvraid nvpxe and sata_raid sil_3114 .
    http:/rapidshare.com/files/25065364/k8n4ed_slic.zip.html/

    tell me if i did it well

  7. sixcentgeorge_fr
    April 9th, 2007 09:29
    31

    the step 10 is not so clean :
    10 Position the cursor after the RSDT…FACS string ACPItables (db 1EH).
    here is CC20 so no calc [step 15 ] ?

    89D8 : if the address is not a “problem” to what step jump ?

    ps : is there a topic like this for installing vista on a fat32 , i know it can be be done after install on ntfs to format fat32 and copy the backup .
    nice “chinese” work ;]

  8. Ryan
    March 23rd, 2007 05:56
    30

    can someone please post a step-by-step (of this document at step 22)

  9. fbifido
    March 22nd, 2007 11:38
    29

    Hi,

    I am stuck at step 22 & 23.

    is step 22 for information, or is there a way to remove seg000:CDD7,CDDA,CE0F & CE12 in IDA?

    how do i type in the assemble code script at seg000:CDCF

    Or do we delete the codes and type new one using winhex or ultraedit.

    I use winhex for all my editing.

  10. viama
    March 21st, 2007 18:19
    28

    Modded BIOS for MSI K8N SLI-F anyone?

  11. Agnoia
    March 16th, 2007 03:48
    27

    Tools to open:
    Award: modbin
    AMI: mmtool, amimmwin
    Phoenix: Phoenix Bios editor

  12. smile
    March 16th, 2007 01:59
    26

    I ask again, how to work with AMI or phoenix BIOS?

    What tools to use modbin6 does not work even if I rename files to *.bin

Pages: [2] 1 » Show All

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting


Custom Search

New Articles

Incoming Search Terms for the Article

vista bios - slic (v2) - slic v2 - vista oem - SLIC - vista bios mod - slic bios - BIOS supports slic (v2) - Bios SLIC - SLIC bios mod - bios vista - Vista SLIC - bios mod - vista oem bios - oem bios - mod bios - oem bios mod - modded bios - adding slic table to bios - SLIC modded bios - editing BIOS ACPI_SLIC info - award slic - add slic to bios - bios mod vista - modify bios slic - award bios slic - vista slic bios - award bios editor - all - Bios slic v2 - add SLIC - bios oem - award bios mod - award bios vista - pc BIOS supports slic (v2) - vista - BIOS Supports slic - vista oem bios mod - slic v2 bios - not compressed award binary code - modify bios vista - CBROM 2.19 - bios - oem bios mods - oem vista - slic table - award bios - modify bios - slic bios mods - bios slic (v2) - award bios SLIC - award bios vista mod - phoenix bios modding - Bios Modding vista - ggroup.bin - windows vista oem bios - slic vista - add slic award bios - P31 SLIC Modded BIOS - AMI BIOS - "Oem bios mod" - adding slic table - oem - slic mod - bios mod slic - adding slic to bios - modded bios vista - cbrom slic - PC BIOS Supports slic - phoenix bios slic - Award Bios slp downloads - vista modded bios - bios slic table - MSI K8N oem vista activation mod - windows vista oem -