此篇文章的内容仅供教学目的使用。
The content of this post is for educational purposes only.

背景

在2023年,若想从泄露的nt5src.7z编译出完整可启动的操作系统,面临的第一个问题便是构建证书的续订。
在nt5src.7z或win2003_prepatched_v10a内包含的构建证书已经过期,在运行razzle进行编译的时候会出现错误

SignTool Error: ISignedCode::Sign returned error: 0x80880253
        The signer's certificate is not valid for signing.

Windows Thin PC-2023-12-15-20-59-33.png

在泄漏的源码中,原先的测试证书已经被硬编码至部分源文件中。
幸运的是,有人提供了一个脚本,可以生成新的证书,它并且也能够修补这些源文件,使razzle可以正常运行。
Win2K3 test certificates utility

在开始,需要将提取win2k的源代码,将原文件名更改为srv03rtm后,将win2003_prepatched_v10a解压并覆盖到源代码目录,接着新建一个为certuil的目录,执行以下操作。

源文件复制为
srv03rtm/base/ntsetup/syssetup/crypto.ccertutil/source/base-ntsetup-syssetup-crypto.c
srv03rtm/base/win32/fusion/sxs/strongname.cppcertutil/source/base-win32-fusion-sxs-strongname.cpp
srv03rtm/ds/security/cryptoapi/mincrypt/lib/vercert.cppcertutil/source/ds-security-cryptoapi-mincrypt-lib-vercert.cpp
srv03rtm/ds/security/cryptoapi/pki/certstor/policy.cppcertutil/source/ds-security-cryptoapi-pki-certstor-policy.cpp
srv03rtm/ds/win32/ntcrypto/mincrypt/vercert.cppcertutil/source/ds-win32-ntcrypto-mincrypt-vercert.cpp
srv03rtm/shell/shell32/defview.cppcertutil/source/shell-shell32-defview.cpp
srv03rtm/tools/checktestpca.cmdcertutil/source/tools-checktestpca.cmd
srv03rtm/tools/checktestroot.cmdcertutil/source/tools-checktestroot.cmd
srv03rtm/tools/postbuildscripts/crypto.cmdcertutil/source/tools-postbuildscripts-crypto.cmd
srv03rtm/windows/core/ntuser/kernel/server.ccertutil/source/windows-core-ntuser-kernel-server.c

上文链接里提到的脚本和配套文件。
certutil.7z Password:classsoft.net

上文提到的脚本需要在*nix环境运行,因此可以尝试使用MinGW或Git For Windows的老版本。

运行generate.sh

Windows Thin PC-2023-12-16-12-28-10.png

安装srv03rtm.certs/tools生产的证书文件(空密码)后,将生成的srv03rtm.certs覆盖到srv03rtm,随后再打开razzle,一切都应该可以正常工作。
Windows Thin PC-2023-12-09-20-19-15.png

Windows Thin PC-2023-12-09-20-24-16.png

Windows Thin PC-2023-12-09-22-20-49.png

Windows Thin PC-2023-12-09-22-28-38.png

文章目录