首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测没有WinVerifyTrust的数字签名

检测没有WinVerifyTrust的数字签名
EN

Stack Overflow用户
提问于 2011-06-25 09:06:03
回答 3查看 1.4K关注 0票数 3

我有大量的EXE文件,需要找出哪些文件有数字签名。有没有人知道有没有办法在不访问WinVerifyTrust的情况下进行检查(它们都在Unix服务器上)。

我似乎找不到任何关于数字签名在EXE中的实际位置的信息。如果我能找到它在哪里,我也许就能打开文件并将其转到要测试的位置。我不需要对证书进行“真正的”验证,我只想看看数字签名是否存在(或者,更重要的是,不存在),而不必使用WinVerifyTrust。

EN

回答 3

Stack Overflow用户

发布于 2012-12-19 17:44:50

如上所述,仅存在IMAGE_DIRECTORY_ENTRY_SECURITY目录是检测PE文件内存在签名的明确指示符。如果您有大量的文件要测试,并且想要过滤这些文件,那么只需测试这个标准目录是否存在就可以了。您不需要库就可以做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2019-09-23 13:32:03

我试着在同样的情况下解决这个问题。我推荐osslsigncode。这是一个用openssl实现的windows authenticode。

https://github.com/develar/osslsigncode

下面是来自osslsigncode的代码块摘录。

代码语言:javascript
复制
siglen = GET_UINT32_LE(indata + peheader + 152 + pe32plus*16 + 4);

如果osslsigncode中siglen为0,则确定没有签名。

如果您只想检查签名,则不需要库。

但是,请参阅osslsigncode以获取帮助。

票数 1
EN

Stack Overflow用户

发布于 2011-08-08 03:01:19

您可以使用Mono.Security.dll AuthenticodeBase 1中的代码查找此信息

1

最好的提示(如果有authenticode签名)是:

代码语言:javascript
复制
 // 2.2. Locate IMAGE_DIRECTORY_ENTRY_SECURITY (offset and size)
 dirSecurityOffset = BitConverterLE.ToInt32 (fileblock, peOffset + 152);
 dirSecuritySize = BitConverterLE.ToInt32 (fileblock, peOffset + 156);

如果dirSecuritySize大于8,则存在签名条目(有效或无效)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6475132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档