FuckCertVerifyTimeValidity 项目教程
项目介绍
FuckCertVerifyTimeValidity 是一个开源项目,旨在帮助用户使用过期的数字证书对二进制文件进行签名,而无需手动更改系统时间。该项目通过挂钩 crypt32
库中的 CertVerifyTimeValidity
函数和 kernel32
库中的 GetLocalTime
函数,使得签名工具(如 signtool
)在验证证书时间有效性时总是返回 0
,从而允许使用过期证书进行签名。
项目快速启动
环境准备
- 安装 Visual Studio 2015 或 2017
- 克隆项目仓库:
git clone https://github.com/hzqst/FuckCertVerifyTimeValidity.git
构建项目
- 打开项目解决方案文件
FuckCertVerifyTimeValidity.sln
。 - 在 Visual Studio 中选择合适的配置(如 Release 或 Debug)。
- 构建项目。
使用示例
- 使用 LordPE 工具为你的目标二进制文件添加导入表项,导入
FuckCertVerifyTimeValidity.dll
。 - 运行签名工具,例如
signtool
,并添加命令行参数-fuckyear 2011
来指定证书的年份。
signtool sign /f mycert.pfx /p mypassword /t http://timestamp.digicert.com /fd sha256 /v -fuckyear 2011 myfile.exe
应用案例和最佳实践
应用案例
- 软件发布:在软件发布过程中,如果数字证书已过期,可以使用此工具继续对软件进行签名,确保软件的合法性和可信度。
- 安全研究:在进行安全研究和测试时,可能需要使用过期证书来模拟特定场景,此工具可以方便地实现这一需求。
最佳实践
- 定期更新证书:尽管此工具允许使用过期证书,但最佳实践是定期更新数字证书,以确保软件的安全性和合规性。
- 安全测试:在安全测试环境中使用此工具,避免在生产环境中使用过期证书。
典型生态项目
- Detours:该项目使用了 Microsoft 的 Detours 库来实现 API 挂钩,Detours 是一个用于在 Windows 平台上进行 API 拦截和修改的开源库。
- LordPE:LordPE 是一个用于编辑 PE 文件的工具,可以用来添加导入表项,是使用此工具的必要步骤之一。
通过以上步骤和指南,您可以快速上手并使用 FuckCertVerifyTimeValidity 项目,实现使用过期证书对二进制文件进行签名的需求。