找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2704

积分

0

好友

363

主题
发表于 19 小时前 | 查看: 0| 回复: 0

Windows操作系统标志

你是否遇到过因代码签名证书过期而无法为文件签名,却又不想修改系统时间的困扰?SignToolEx 这款工具提供了一种巧妙的思路。它通过 Hook(钩子) 技术,在不改动系统时间的情况下,让你能够利用过期的证书完成签名操作。

其核心原理是利用 Microsoft Detours 钩子库对系统自带的 signtool.exe 进程进行劫持。SignToolEx 会在运行时修改关于证书有效期的判断逻辑,使得过期的证书在签名过程中被视为“有效”,从而完成签名流程。这意味着,即使是已经泄露或过期的证书,也有可能被再次用于签名。

不过,需要注意的是,这种方法无法伪造 Authenticode 时间戳。同时,根据实际测试,某些版本的 Windows 系统(例如 Windows 10)对于已签名的 .sys 设备驱动程序,即使其签名证书已过期,系统仍然会接受并加载该驱动。

使用方法

SignToolEx 的使用方式与官方的 signtool.exe 几乎完全一致。你只需要在命令行中运行 SignToolEx.exe 并附上相应的参数即可。使用前,请确保满足以下两个条件:

  1. 当前目录下存在 SignToolExHook.dll 文件。
  2. 系统的 %PATH% 环境变量中已包含 signtool.exe 的路径。

下面是一个典型的使用示例:

C:\tools\SignToolEx>SignToolEx.exe sign /v /f nvidia0.pfx /p **redacted** /fd SHA256 c:\temp\bin.exe
The following certificate was selected:
    Issued to: NVIDIA Corporation
    Issued by: VeriSign Class 3 Code Signing 2010 CA
    Expires:   Sat Jul 26 17:59:59 3000
    SHA1 hash: 30632EA310114105969D0BDA28FDCE267104754F
Done Adding Additional Store
Successfully signed: c:\temp\bin.exe
Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0

从输出结果可以看到,原本应该过期的证书,其到期时间被显示为了一个遥远的未来日期(3000年),从而“骗过”了签名检查流程,最终成功完成了对 bin.exe 文件的签名。

技术讨论与更多安全工具研究,欢迎访问 云栈社区 的开发者论坛进行交流。




上一篇:PostgreSQL数据损坏实战解析:clog文件丢失导致查询报错的根因分析与修复方案
下一篇:从浏览器到服务器:一文讲透HTTP请求在网络中的完整旅程
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-2 23:01 , Processed in 0.274633 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表