我们需要使用signtool.exe使用SHA1和SHA2双重签名我们的二进制文件,我们的证书支持256位SHA2.
使用Windows 8 SDK的signtool:
例如:
signtool.exe签名/ as/fd sha256/t http://timestamp.verisign.com/scripts/timstamp.dll/f"certificate.pfx"/ p XXXXXXX"file.dll"
(XXXXXXX是我们的证书密码)
因为神秘错误而失败:
SignTool错误:SignedCode :: Sign返回错误:0x80070057参数不正确.SignTool错误:尝试签名时发生错误:file.dll
在没有时间戳的情况下进行签名,单独签名为SHA1或SHA256可以正常工作,但是我们需要双重签名,并且想象没有时间戳是不行的.
我已经尝试了32位和64位版本的signtool.exe,在Win7和Win8机器上试过它,并尝试使用命令行选项,但无济于事.以前有人打过这个问题吗?
我有一个客户应用程序的崩溃转储,它是用我在WinDbg中分析的dll(发布版本,没有原始符号)的旧版本构建的.
为了获得更多信息,我在发布模式下使用相同的编译器版本重建了带符号的dll,我相信与最初构建dll时相同的设置.我将符号文件添加到我的符号路径,但是WinDbg扩展名!itoldyouso告诉我转储中的模块与PDB文件不匹配.启用SYMOPT_LOAD_ANYTHING也没有帮助.
!itoldyouso告诉我他们不匹配,因为模块没有pdb sig(值0),而不是我创建的重新创建的符号文件(使用有效的pdb sig).我如何让它们匹配?
客户正在使用我们的 dll,该 dll 正在创建一个使用开源库的子进程,最终由于调用 LoadLibraryExW() 而失败,返回的最后一个错误是 ERROR_MOD_NOT_FOUND。这发生在 WinXP 32 位上,但不会发生在其他机器上。但是我们知道安装了正确的依赖项集,甚至在同一目录中。
所以我们很自然地想到,使用 Dependency Walker 来查找特定机器上缺少什么依赖项。不幸的是,它没有显示任何缺失,只是一些不是库的直接依赖项的延迟加载警告。根据我使用depends.exe 的经验,它总是揭示缺少的依赖项是什么。
所以在这一点上,我已经把我的头发拉出来试图理解如果所有库的依赖项都存在,为什么我会收到 ERROR_MOD_NOT_FOUND ?使这台机器独一无二的唯一另一件事是它非常安全,因为它由政府使用,但如果我们遇到访问/权限问题,我预计会出现不同类型的错误代码。
我已经构建了一个小的 Win32 可执行文件,它只在所述库上调用 LoadLibraryExW(),当它从与库所在的目录相同的目录中运行时,它会在客户有问题的机器上毫无问题地加载库。
一件事是我们的产品是一个 ActiveX 插件,它启动一个子进程,子进程调用第 3 方库,第 3 方库有问题的 LoadLibraryExW() 调用。那么也许它失败的原因是它正在运行的上下文(例如从浏览器)?
之前我曾经使用windbg进行用户模式调试,但我怀疑我对我的系统做了一些事情,因为我不记得使用例如扩展命令!堆之前有问题.
我可以清楚地看到ntdll是一个加载的模块:
77760000 778e0000 ntdll (pdb symbols) C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\sym\wntdll.pdb\FA9C48F9C11D4E0894B8970DECD92C972\wntdll.pdb
0:001> lmvm ntdll
start end module name
77760000 778e0000 ntdll (pdb symbols) C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\sym\wntdll.pdb \FA9C48F9C11D4E0894B8970DECD92C972\wntdll.pdb
Loaded symbol image file: C:\Windows\SysWOW64\ntdll.dll
Image path: C:\Windows\SysWOW64\ntdll.dll
Image name: ntdll.dll
Timestamp: Wed Jul 15 13:53:36 2015 (55A69E20)
CheckSum: 00142A8B
ImageSize: 00180000
File version: 6.1.7601.18933
Product version: 6.1.7601.18933
File flags: 0 (Mask 3F)
File OS: 40004 NT Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® …Run Code Online (Sandbox Code Playgroud) debugging ×2
windbg ×2
windows ×2
authenticode ×1
crash-dumps ×1
loadlibrary ×1
metadata ×1
node.js ×1
pdf ×1
sha256 ×1
signtool ×1
symbols ×1
verisign ×1
winapi ×1