From 736c8f968da06177417cee495f2e20206d7d3c32 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Mon, 18 Apr 2022 19:00:42 -0300 Subject: [PATCH] Decrease Intel bruteforce interval from 16 KB (previous commit message was wrong) to 4 KB, fixes AP450GX --- bios_extract/src/bios_extract.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/bios_extract/src/bios_extract.c b/bios_extract/src/bios_extract.c index 4f20307..a5b99d1 100644 --- a/bios_extract/src/bios_extract.c +++ b/bios_extract/src/bios_extract.c @@ -284,9 +284,9 @@ int main(int argc, char *argv[]) /* Bruteforce Intel AMI Color fork LH5. */ Offset2 = 1; - for (Offset1 = 0; Offset1 < (FileLength - 10); Offset1 += 0x4000) { + for (Offset1 = 0; Offset1 < (FileLength - 10); Offset1 += 0x1000) { BIOSOffset = Offset1; -CopyrightOffset:if ((LH5Decode(BIOSImage + BIOSOffset, FileLength - BIOSOffset, IntelAMI, 13) > -1) && +retry: if (((fd = LH5Decode(BIOSImage + BIOSOffset, FileLength - BIOSOffset, IntelAMI, 13)) > -1) && (!memcmp(IntelAMI, "AMIBIOS(C)AMI", 13) || ((IntelAMI[0] == 0x55) && (IntelAMI[1] == 0xaa)))) { if (Offset2 == 1) { printf("Found potential Intel AMIBIOS.\n"); @@ -303,7 +303,7 @@ CopyrightOffset:if ((LH5Decode(BIOSImage + BIOSOffset, FileLength - BIOSOffset, Offset2 = 0; /* main body found, all good */ } - Buffer = MMapOutputFile((char *) IntelAMI, len); +save: Buffer = MMapOutputFile((char *) IntelAMI, len); if (!Buffer) return 1; @@ -319,8 +319,12 @@ CopyrightOffset:if ((LH5Decode(BIOSImage + BIOSOffset, FileLength - BIOSOffset, munmap(Buffer, len); } else if (!(BIOSOffset & 0xff)) { - BIOSOffset += 0x44; - goto CopyrightOffset; + BIOSOffset += 0x44; /* skip "Copyright Notice: Copyright Intel..." */ + goto retry; + } else if ((fd > -1) && !memcmp(BIOSImage + Offset1, "Copyright Notice: Copyright Intel", 33)) { + len = 65536; + sprintf((char *) IntelAMI, "intelunk_%05X.rom", BIOSOffset); + goto save; } }