我有大量的EXE文件,需要找出哪些文件有数字签名。有没有人知道有没有办法在不访问WinVerifyTrust的情况下进行检查(它们都在Unix服务器上)。
我似乎找不到任何关于数字签名在EXE中的实际位置的信息。如果我能找到它在哪里,我也许就能打开文件并将其转到要测试的位置。我不需要对证书进行“真正的”验证,我只想看看数字签名是否存在(或者,更重要的是,不存在),而不必使用WinVerifyTrust。
发布于 2012-12-19 17:44:50
如上所述,仅存在IMAGE_DIRECTORY_ENTRY_SECURITY目录是检测PE文件内存在签名的明确指示符。如果您有大量的文件要测试,并且想要过滤这些文件,那么只需测试这个标准目录是否存在就可以了。您不需要库就可以做到这一点。
发布于 2019-09-23 13:32:03
我试着在同样的情况下解决这个问题。我推荐osslsigncode。这是一个用openssl实现的windows authenticode。
https://github.com/develar/osslsigncode
下面是来自osslsigncode的代码块摘录。
siglen = GET_UINT32_LE(indata + peheader + 152 + pe32plus*16 + 4);如果osslsigncode中siglen为0,则确定没有签名。
如果您只想检查签名,则不需要库。
但是,请参阅osslsigncode以获取帮助。
发布于 2011-08-08 03:01:19
您可以使用Mono.Security.dll AuthenticodeBase 1中的代码查找此信息
最好的提示(如果有authenticode签名)是:
// 2.2. Locate IMAGE_DIRECTORY_ENTRY_SECURITY (offset and size)
dirSecurityOffset = BitConverterLE.ToInt32 (fileblock, peOffset + 152);
dirSecuritySize = BitConverterLE.ToInt32 (fileblock, peOffset + 156);如果dirSecuritySize大于8,则存在签名条目(有效或无效)。
https://stackoverflow.com/questions/6475132
复制相似问题