如何给自己的 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