当没有Setup Menu Insyde Full Show这个菜单的时候要解锁BIOS高级选项该怎么办?没有实践过,但这个思路大概没啥毛病。
1、总体原理
Universal IFR Extractor反编译出SetupUtility的内容Section_PE32_image_SetupUtility_SetupUtility IFR.txt,查看有类似这样的表述
0x181BB1 Suppress If {0A 82}
0x181BB3 QuestionId: 0x1C91 equals value 0x0 {12 06 91 1C 00 00}
0x181BB9 Ref: Clevo SHOW SETUP ITEM Settings, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x1, FormId: 0x601 {0F 0F 7B 09 02 00 01 00 00 00 FF FF 00 01 06}
0x181BC8 End If {29 02}
Suppress if :不显示
QuestionId: 0x1C91 equals value 0x0 :当某个叫0x1c91的变量等于0时不显示,1206911C0000为其二进制表示,
不显示的菜单是Clevo SHOW SETUP ITEM Settings
故可将0x0改成其他值使条件不满足即可显示,即将1206911C0000修改为1206911C00FF即可。
SetupUtility位于BIOS的一个使用LZMA压缩算法的区域,需要先解压缩出来,然后修改,再压缩回去,然后比对不同的地方,将不同地方写入到BIOS提取BIOS内,然后修正字节数和校验码。
修改后的BIOS要想用fpt命令刷回去,需要修改BIOS LOCK和Flash Protection Range Registers (FPRR)变量来解除保护。
2、实现方式
用UEFItool解压缩出SetupUtility所在的压缩区,得到Section_GUID_defined_LzmaCustomDecompressGuid_20BC8AC9-94D1-4208-AB28-5D673FD73486_body_uncompressed.bin
用winhex软件打开这个bin文件,替换1206911C0000为1206911C00FF