通过脚本续订构建Windows XP/ Server 2003的测试证书
此篇文章的内容仅供教学目的使用。
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.
在泄漏的源码中,原先的测试证书已经被硬编码至部分源文件中。
幸运的是,有人提供了一个脚本,可以生成新的证书,它并且也能够修补这些源文件,使razzle可以正常运行。
Win2K3 test certificates utility
在开始,需要将提取win2k的源代码,将原文件名更改为srv03rtm
后,将win2003_prepatched_v10a解压并覆盖到源代码目录,接着新建一个为certuil
的目录,执行以下操作。
、
源文件 | 复制为 |
---|---|
srv03rtm/base/ntsetup/syssetup/crypto.c | certutil/source/base-ntsetup-syssetup-crypto.c |
srv03rtm/base/win32/fusion/sxs/strongname.cpp | certutil/source/base-win32-fusion-sxs-strongname.cpp |
srv03rtm/ds/security/cryptoapi/mincrypt/lib/vercert.cpp | certutil/source/ds-security-cryptoapi-mincrypt-lib-vercert.cpp |
srv03rtm/ds/security/cryptoapi/pki/certstor/policy.cpp | certutil/source/ds-security-cryptoapi-pki-certstor-policy.cpp |
srv03rtm/ds/win32/ntcrypto/mincrypt/vercert.cpp | certutil/source/ds-win32-ntcrypto-mincrypt-vercert.cpp |
srv03rtm/shell/shell32/defview.cpp | certutil/source/shell-shell32-defview.cpp |
srv03rtm/tools/checktestpca.cmd | certutil/source/tools-checktestpca.cmd |
srv03rtm/tools/checktestroot.cmd | certutil/source/tools-checktestroot.cmd |
srv03rtm/tools/postbuildscripts/crypto.cmd | certutil/source/tools-postbuildscripts-crypto.cmd |
srv03rtm/windows/core/ntuser/kernel/server.c | certutil/source/windows-core-ntuser-kernel-server.c |
上文链接里提到的脚本和配套文件。
certutil.7z Password:classsoft.net
上文提到的脚本需要在*nix环境运行,因此可以尝试使用MinGW或Git For Windows的老版本。
运行generate.sh
安装srv03rtm.certs/tools
生产的证书文件(空密码)后,将生成的srv03rtm.certs
覆盖到srv03rtm
,随后再打开razzle,一切都应该可以正常工作。
文章目录
Can't open -i: No such file or directory, <> chunk 1.
生成证书时有一个这样的错误,是为什么?
} ↩1.尝试使用我提供的所有文件,在确保目录可写的情况下尝试是否能成功生成测试证书
2.重新从https://rentry.co/win2k3-certutil获取完整的generate.sh