说在前面的话:

部分主板(比如华擎b150 gaming k4/hyper)点亮QL3X需要使用cor版本的me,而官方BIOS自带的me为con版本的me,留给me的空间为2m左右;cor版本的me大小为7m左右,经过me cleaner处理后大小为2.5m左右仍无法正常进行me的替换,所以需要对这2.5m的me进行进一步精简才能正常替换。

 

本文所涉及的内容仅有自己少量测试,仅供参考,自行测试有效性。

废话就说这么多了,下面开始正题。

 

一、使用me cleaner精简me

 

所需工具:me cleaner(me cleaner运行需要Python环境)

下载链接(解压后使用):https://lanzoux.com/iwhn3ffxbla

 

使用方法:将7m左右cor版本的me重命名为me.rgn放入mecleaner-1.2文件夹,运行start.bat得到me_new.bin。

我们以11.8.65.3590_COR_H_DA_PRD_RGN.bin为例,可见me_new.bin仅保留了FTPR与MFS分区,其他分区均被移除,如下图


 

me_new.bin大小仍然显示为7M左右,我们使用Flash Image Tool打开me_new.bin后关闭Flash Image Tool,在Flash Image Tool的根目录下会生成me_new文件夹,里面是me的解包文件,Decomp文件夹里面的ME Region.bin便是经过me cleaner处理过后真实大小的me文件,一般为2.5m左右大小。

 

二、使用ME Analyzer分析ME Region.bin

 

所需工具:ME Analyzer

下载链接(解压后使用):https://lanzoux.com/ihDfJge971c

 

我们将ME Region.bin直接拖到MEA.exe上面,在弹出界面中的"Option(s):"后输入-dfpt,然后回车得到输出结果,如下图


 

输出结果下方是me的基本信息,自己可以自行了解学习下;上方的Flash Partition Table(me的分区表)中每个分区start列、size列、end列的内容是我们重点要关注的数据。

 

Flash Partition Table中start列、size列、end列分别代表分区的起始位置、大小和结束位置,数据均为十六进制数据,可以转换成十进制方便后续操作,方法如下

 

注:这里我们使用Win10 2004版本自带的计算器来进行进制转换,也可以自行寻找其他工具进行转换。

打开计算器后点击左上角的三条横线,选择程序员,如下图


 

在计算器-程序员界面,hex代表十六进制,dec代表十进制,oct代表八进制,bin代表二进制;

我们选择需要转换的进制,比如选中hex,输入十六进制的数据或者进行运算,便会计算出不同进制的结果。我们以十六进制的加法"E+1"为例如下图


 

"E+1"的结果十六进制为F,十进制为12,八进制为17,二进制为1111。

 

下面我们回归正题,我们把FTPR与MFS的分区数据转换为十进制,如下

start  size end
FTPR 4096 1241088 1245184
MFS 1245184 1302528 2547712


接下来我们需要记录FTPR与MFS分区起始位置的关键字以供后续使用

 

所需工具:wxMEdit

下载链接:https://lanzoux.com/inCcdfipnta

 

使用wxMEdit打开ME Region.bin,点击上方的查找-转到文件位置...,输入1245184后确定定位至MFS分区的起始位置,记录下关键字

87 78 55 AA 01 00 00 00 01 00 00 00 01 00 00

复制十六进制数据方法:选择需要复制的数据右键选择高级-复制为十六进制字符串(含空格),如下图


 

 

三、精简FTPR分区

 

在FTPR分区后半部分大多以FF填充,我们可以删除这些无用数据来精简FTPR分区。删除FF的数量的多少以实际情况为准,调整至你需要的me大小即可。这里以华擎b150 gaming k4/hyper为例,所需me的大小为2093056字节,用uefitool打开官方BIOS即可查看所需me的大小,如下图


 

FF数据删除方法:

点击wxMEdit上面的查找-查找...,查找页面勾上查找十六进制字符串,输入上方已经记录下来关键字定位到MFS分区的起始位置,然后删除MFS分区起始位置前面连续的FF即可,如下图


 

FF数据删除完成后,wxMEdit的字节统计应该与所需me的大小保持一致,如下图


四、修复Flash Partition Table

 

因为我们删除了FTPR分区后半部分的FF数据,导致的FTPR分区大小的改变以及MFS分区起始位置的改变,如果我们直接使用Flash Image Tool替换me会报错,如下图


 

我们需要修复Flash Partition Table来使每个分区得到正确的识别。

 

删除FF数据后已知正确的分区表数据

FTPR起始位置:4096

MFS大小:1302528

MFS结束位置:2093056

 

由上述数据可以计算出:

MFS起始位置=MFS结束位置-MFS大小=2093056-1302528=790528

FPTR结束位置=MFS起始位置=790528

FPTR大小=FPTR结束位置-FTPR起始位置=790528-4096=786432

 

修复Flash Partition Table需要每个分区的起始位置和大小,我们将其转化为十六进制数据:

 

           

start  size
FTPR
1000 C0000
MFS C1000 13E000


Flash Partition Table在me文件的前几行,如下图


分区数据填列方式为两个数字为一组从右往左填列,所以应这样填写

start  size
FTPR 00 10 00 00 00 0C
MFS 00 10 0C 00 E0 13

 

 修改后如下图

 

最后保存文件即可,此时me已经可以正常替换。

 

注1:视删除FF数据的多少,有时候修改完成后的me在Flash Image Tool中会有报错,如下图

 

目前少量测试可知此报错不影响使用。

 

注2:本文中分区数据将十六进制转换为十进制,然后又转换回十六进制的操作主要为便于理解,实际操作中可直接使用十六进制数据提升效率。

 



本文主要的参考资料和软件来源:

http://www.smxdiy.com/thread-1297-1-1.html

https://github.com/corna/me_cleaner

https://github.com/platomav/MEAnalyzer

http://blog.ptsecurity.com/2017/08/disabling-intel-me.html

感谢各位大佬的无私奉献!


标签: none

添加新评论