gpt4 book ai didi

c++ - 使用智能卡签名时指定给 RtlFreeHeap 的地址无效 (C++)

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:04 25 4
gpt4 key购买 nike

  • 我正在使用 C++ 和 Visual Studio 2010。

当我使用智能卡执行签名时出现:“When program finished.”

Windows has triggered a breakpoint in MyProgram.exe.

This may be due to a corruption of the heap, and indicates a bug in MyProgram.exe or any of the DLLs it has loaded.

The output window may have more diagnostic information

关于输出

HEAP[MyProgram.exe]: Invalid Address specified to RtlFreeHeap( 003C0000, 01BBFEA0 )
Windows has triggered a breakpoint in MyProgram.exe.

This may be due to a corruption of the heap, which indicates a bug in MyProgram.exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while MyProgram.exe has focus.

The output window may have more diagnostic information.

MyProgram.exe 程序使用 dll“signer.dll”。

我尝试用“无智能卡”签名。仅使用 Windows 证书。 OK 正常结束。
我尝试使用智能卡签名,出现一个要求输入 PIN 的窗口。程序结束时。错误 - 指定给 RtlFreeHeap 的地址无效。
我使用智能卡,当它要求输入 PIN 时,我标记为“NOT”。当程序结束时。错误 - 指定给 RtlFreeHeap 的地址无效。

我注意到只有在出现要求输入 PIN 码的窗口时才会出现错误。

因此,我尝试使用 WinDbg,遵循这篇文章:http://www.codeproject.com/KB/debug/windbg_quick_start.aspx

我把断点放在“CryptSignMessage”出现:“使用智能卡时”

(150c.17fc): C++ EH exception - code e06d7363 (first chance)
(150c.17fc): C++ EH exception - code e06d7363 (first chance)

如果不使用智能卡,则不会发生这种情况。

我认为他试图获取 key 的上下文但不能并且“破坏了内存”。在“第一次机会”后提示 PIN 的窗口。

是这个问题吗?如何在使用 CryptSignMessage 之前获取具有 key 上下文的证书?

我该如何解决?

没有智能卡我可以正常签名。使用智能卡我可以正常签名,但是当程序完成时出现错误。

智能卡上的标志需要注意什么?

提前致谢

最佳答案

正如消息所说,这似乎是堆损坏。他们不太容易追踪。最好的办法是使用内存分析工具来帮助找到原因。

关于c++ - 使用智能卡签名时指定给 RtlFreeHeap 的地址无效 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com