如何获取和解包Repair Content Package
Repair Content Package是用于自动扫描和修复系统文件的文件包,由于其包含较为完整的二进制内容,因此可以一定程度上“组装”出完整的系统。在本站,Repair Content Package中包含的SKU计算在已泄露/可用的SKU列表中。用这种方式制作出的镜像属于非原版,请尽量不要传播。
获取Repair Content Package
EFUE下载链接:https://ftp.betawiki.net/EFUE.zip
EFUE是BetaWiki制作的某一时刻的Windows Update服务器补丁链接合集。可以通过搜索的方式在其中找到绝大部分Windows Update服务器现存的补丁和驱动包等文件,其中包括本文的Repair Content Package。建议将EFUE经过脚本处理后生成SQL数据库方便查询。
解包Repair Content Package
在下载Repair Content Package后,会发现每个PSF
都有对应CAB
包,例如kb777777-amd64-neutral-termsrv_eea805141c65e4c8b20cc379dc9f104f91466aa1.cab
与kb777777-amd64-neutral-termsrv_86426a95856ebfe6175606ae93d2b80d352596fc.psf
。PSF
文件全称Patch Storage File,是用于存储补丁包的补丁文件部分的;对应的CAB
文件中存储了补丁的描述文件[1]。
解包Repair Content Package需要使用的工具是PSFExtractor。
这里准备一个重命名和解包脚本:
重命名和解包脚本
@echo off
setlocal enabledelayedexpansion
pushd %~dp0
rem 清理文件名
for %%i in (*.cab) do (
set name=%%~ni
ren %%i !name:~0,-41!.cab
)
for %%i in (*.psf) do (
set name=%%~ni
ren %%i !name:~0,-41!.psf
)
rem 解压cab包
for %%i in (*.cab) do (
echo 正在解压%%i
expand.exe %%i -F:%%~ni.psf.cix.xml "%~dp0\"
echo.
)
rem 提取psf文件
md sxs
for %%i in (*.psf) do (
echo 正在提取%%i
PSFExtractor.exe -v2 %%i %%i.cix.xml "%~dp0\sxs"
echo.
)
popd
exit
保存时注意bat
的编码应为ANSI,换行符应为CRLF
。
此脚本的内容为:
- 此脚本首先将Repair Content Package文件名中的SHA1部分截断,方便后续处理。
- 将每个
PSF
文件对应的CAB
文件中包含的XML
描述文件提取出来。 - 使用PSFExtractor对
PSF
文件进行分割和解压,并保存到sxs
目录中。
在运行此脚本前,有一点需要特别注意。由于Repair Content Package的特性,某些PSF
中的文件会存在冲突,而冲突的文件中有的文件存在异常截断情况(也可能是有其他目的),因此,需要先单独将文件名中含有neutral-mergedcomponents
的PSF
文件解包,再解包其他PSF
。
此外,Repair Content Package中的部分语言相关安全目录文件也存在截断现象,由于这些版本都提供了独立的语言包CAB
文件,可以使用独立语言包版本替代。
将PSF
文件、对应的CAB
文件、上述批处理脚本以及PSFExtractor工具放在同一个目录,然后运行脚本即可自动解包。首先把neutral-mergedcomponents
单独解包,解包后删掉PSF
和CAB
,再把其他文件解包。如果不按照此顺序,某些组件会被替换为不完整的版本,导致后续安装失败。
本文只是无数可行方法中的一个,仅供参考。