ME精简教程

说在前面的话:

 

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

 

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

 

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

 

一、使用me cleaner精简me

 

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

下载链接(解压后使用):https://lanzous.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仅保留了FTPRMFS分区,其他分区均被移除,如下图

 

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 Tableme的分区表)中每个分区start列、size列、end列的内容是我们重点要关注的数据。

 

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

 

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

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

 

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

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

 

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

 

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

     start     size     end

FTPR  4096        1241088    1245184

MFS   1245184   1302528    2547712

 

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

 

所需工具: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 Tableme文件的前几行,如下图

 

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

      start      size   

FTPR  00 10 00   00 00 0C

MFS   00 10 0C   00 E0 13

 

修改后如下

 

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

 

1:视删除FF数据的多少,有时候修改完成后的meFlash 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

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