如何给自己的 windows 应用程序进行数字签名?

除了付费之外还可以通过期的 CA 证书,修改时间戳为自己的程序进行附加签名。

签名方法

首先,下载最新的亚洲诚信签名工具

https://www.trustasia.com/sign-tools

再下载这个修改版本的签名工具,将压缩包的内容覆盖到工具同级目录。

https://github.com/Jemmy1228/HookSigntool/releases

最后打开程序,在界面中选择 PFX 证书文件,最后导入证书。

mportant; max-width: 100%; user-select: none;"/>

修改伪造的时间戳

你可以看到你导入的证书的有效时间,有一个区间。那么你修改安装目录下 hook.ini 文件,把时间改到这个区间内

比如 2015-02-01 

同时又根据说明文档

根据微软的最新签名策略 https://docs.microsoft.com/en-us/windows-hardware/drivers/install/kernel-mode-code-signing-policy--windows-vista-and-later-

任何有Microsoft Code Verification Root交叉签名,且颁发日期在 2015-07-29 以前的代码签名证书,配合伪造的时间戳签名,可以生成一个在任意 Windows 版本下都有效的驱动签名。

因此,采用泄露的证书,信任自建时间戳根证书,就可以在 WinXP~Win10(SecureBoot Enabled)任意版本成功加载驱动。

为了能够更方便的支持驱动程序签名,那么我们选择的时间需要确定在 CA 证书的区间内,又刚好在 2015-07-29 之前的日期,那么都是可以的。

修改后重启程序。

建立一个签名规则,选择一个已经导入的证书,

sha1 类型的证书支持比较古老的 win7 及以下 系统,sha256 可以在 win10 等更新的系统上使用。

在数字签名页面,添加要签名的文件,或者直接把文件拖入列表。

点击 “数字签名”,选择之前建立的签名规则,以及签名方案。根据程序的类型,选择应用模式或者驱动模式

支持 exe、dll、sys 之类的程序进行签名

签名成功的界面

你的程序也会有一个签名的信息。即使到期了也不影响使用

驱动签名示例

https://github.com/ClownQq/YDArk

下载 YDArk 的程序,把他提供未驱动的文件进行签名。

打开运行,验证能够成功加载驱动。

相关项目

关于这个大佬修改版项目,可以去阅读 README 学习,以及可以支持下

https://github.com/Jemmy1228/HookSigntool

关于 CA 证书的下载

稍后补充链接或者,在吾爱帖子中下载。

https://www.52pojie.cn/thread-1027420-1-1.html